PostgreSQL hibaelhárítása

Megoldások a PostgreSQL-kapcsolatok, a séma és az SSL gyakori problémáihoz a Data API Builderben.

Gyakori kérdések

Mi a PostgreSQL támogatása a DAB-ban?

A Data API Builder relációs adatbázisként támogatja a PostgreSQL-t. A DAB az Npgsql-illesztőprogram használatával csatlakozik, és a REST- és GraphQL-kéréseket SQL-lekérdezésekké fordítja le. Mind a saját üzemeltetésű PostgreSQL-példányok, mind a felügyelt szolgáltatások, például az Azure Database for PostgreSQL támogatottak.

Milyen kapcsolati sztringformátumot használ a PostgreSQL?

A DAB PostgreSQL szempontjából ADO.NET-stílusú kapcsolati karakterláncot használ. Egy tipikus sztring így néz ki: Host=localhost;Port=5432;Database=mydb;Username=myuser;Password=mypassword;. Állítsa be a kapcsolati karakterláncot a data-source.connection-string mezőben a dab-config.json-nél, vagy adja át a --connection-string segítségével a dab init-ban.

Támogatja a DAB a PostgreSQL-sémákat?

Igen. A DAB támogatja a nem nyilvános sémákat. Hivatkozzon a sémára kifejezetten az entitás source mezőjében a formátum schemaname.tablename használatával (például sales.orders). A kapcsolati sztringben konfigurált adatbázis-felhasználónak jogosultsággal kell rendelkeznie a USAGE sémán és SELECT, INSERT, UPDATE vagy DELETE jogosultsággal a céltáblákon.

Gyakori problémák

Nem lehet csatlakozni a PostgreSQL-tárolóhoz

Tünet: A DAB nem indul el Failed to connect to localhost:5432 , vagy hasonló hálózati hiba történt.

Okoz: A PostgreSQL-tárolóport nincs leképezve, vagy a tároló nem áll készen a kapcsolatok elfogadására.

Felbontás: Ellenőrizze, hogy a konténer fut-e, és hogy a port 5432 le van-e képezve a gazdagépre. Használja Host=localhost;Port=5432 a kapcsolati sztringben. Ha a tároló most indult el, engedélyezzen néhány másodpercet a PostgreSQL inicializálására a DAB elindítása előtt.

A jelszó-hitelesítés nem sikerült

Tünet: DAB-naplók jelennek meg 28P01: password authentication failed for user.

Okoz: A kapcsolati sztringben szereplő felhasználónév vagy jelszó helytelen, vagy a PostgreSQL-felhasználó más hitelesítési módszerhez van konfigurálva, példáulpeer.ident

Felbontás: Ellenőrizze, hogy a hitelesítő adatok egyeznek-e a PostgreSQL-példány vagy -tároló létrehozásakor beállított hitelesítő adatokkal. Tárolók esetén ellenőrizze a POSTGRES_PASSWORD és POSTGRES_USER környezeti változókat. Ha helyileg fut, győződjön meg arról, hogy pg_hba.conf engedélyezi md5 vagy scram-sha-256 hitelesítést a csatlakozó gazdagéphez.

A séma nem található, ha az entitás nem nyilvános sémára hivatkozik

Tünet: A DAB hibát relation "tablename" does not exist ad vissza annak ellenére, hogy a tábla létezik az adatbázisban.

Okoz: Az entitás mezője source kihagyja a sémaelőtagot, ezért a PostgreSQL alapértelmezés szerint csak a public sémában keres.

Felbontás: Frissítse a source benne lévő dab-config.json értéket, hogy tartalmazza például sales.ordersa sémaelőtagot. Ellenőrizze, hogy az adatbázis-felhasználó rendelkezik-e USAGE a sémán a következő futtatásával: GRANT USAGE ON SCHEMA sales TO myuser;psql.

Az SSL-követelmény miatt hiba az Azure Database for PostgreSQL-hez való csatlakozáskor

Tünet: Az Azure Database for PostgreSQL-hez való kapcsolatok sikertelenek SSL connection is required.

Okoz: Az Azure Database for PostgreSQL alapértelmezés szerint kényszeríti az SSL-t. Az SSL nélküli kapcsolatok elutasításra kerülnek.

Felbontás: Fűzze hozzá Ssl Mode=Require; a kapcsolati sztringet. A teljes tanúsítványérvényesítéshez állítsa be a Trust Server Certificate=false, és adja meg a kiszolgáló hitelesítésszolgáltatói tanúsítványának elérési útját a Root Certificate=path/to/ca.pem segítségével. Töltse le a tanúsítványcsomagot az Azure Portalról a kiszolgáló hálózati beállításai alatt.

A tárolt eljárások nem támogatottak

Tünet: A PostgreSQL tárolt eljárásának vagy függvényének entitásforrásként való konfigurálása meghiúsul, vagy az entitás nem a várt módon működik.

Okoz: A Data API Builder jelenleg nem támogatja a PostgreSQL tárolt eljárásait. Ez egy ismert korlátozás, amelyet a GitHub 1023- os hibája követ nyomon.

Felbontás: Használjon inkább egy táblát vagy nézetet entitásforrásként. Kövesse a GitHub problémát a PostgreSQL tárolt eljárás támogatásának hozzáadásához kapcsolódó frissítésekről.

Az adatbázis házirend nem kerül érvényesítésre a létrehozási műveleteknél

Tünet: A létrehozási mutáció vagy POST-kérés akkor is sikeres, ha egy adatbázis-szabályzatnak korlátoznia kell a műveletet.

Okoz: A PostgreSQL-beli létrehozási műveletek adatbázisházirend-támogatása még nincs implementálva. Ez egy ismert korlátozás, amely a GitHub #1334-es feladatban van rögzítve.

Felbontás: Szerepköralapú engedélyekkel korlátozhatja a létrehozási hozzáférést, amíg el nem érhető a PostgreSQL Create adatbázisházirend-támogatása.

Az adatbázis házirend nem érvényesül a PUT és a PATCH műveletek esetén

Tünet: Egy PostgreSQL-entitás PUT vagy PATCH kérése akkor is sikeres, ha egy adatbázis-szabályzatnak korlátoznia kell.

Okoz: A PostgreSQL PUT és PATCH műveleteinek adatbázisházirend-támogatása még nincs implementálva. Ez egy ismert korlátozás, amelyet a GitHub #1372-es probléma követ.

Felbontás: Szerepköralapú engedélyekkel korlátozhatja a frissítési hozzáférést, amíg az adatbázisházirend nem támogatja a PostgreSQL frissítési műveleteit.

On-Behalf-Of (OBO) hitelesítés nem támogatott

Tünet: A PostgreSQL-alapú DAB-példány On-Behalf-Of (OBO) hitelesítésének konfigurálása sikertelen, vagy a jogkivonat nem a várt módon kerül továbbításra az adatbázishoz.

Okoz: Az OBO-hitelesítés jelenleg csak az SQL Server és az Azure SQL esetében támogatott. A PostgreSQL, a MySQL és az Azure Cosmos DB támogatása még nem lett megvalósítva. Ez egy ismert korlátozás, amelyet a GitHub 3159- ös problémájában követnek nyomon.

Felbontás: Használjon támogatott hitelesítési módszert, például kapcsolati sztring hitelesítő adatait vagy felügyelt identitást a PostgreSQL-hez. Az OBO-támogatás nem SQL Server-adatbázisokra való kiterjesztésének időpontjáról a GitHub-problémát követve tájékozódhat.