Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Řešení běžných problémů s připojením, schématem a SSL ve PostgreSQL v Tvůrci rozhraní API pro data
Časté dotazy
Co je podpora PostgreSQL v DAB?
Tvůrce rozhraní Data API podporuje PostgreSQL jako back-end relační databáze. DAB se připojuje pomocí ovladače Npgsql a překládá požadavky REST a GraphQL na dotazy SQL. Podporují se jak místní instance PostgreSQL, tak spravované služby, jako je Azure Database for PostgreSQL.
Jaký formát připojovacího řetězce používá PostgreSQL?
DAB používá připojovací řetězec ve stylu ADO.NET pro PostgreSQL. Typický řetězec vypadá takto Host=localhost;Port=5432;Database=mydb;Username=myuser;Password=mypassword;. Nastavte připojovací řetězec v poli data-source.connection-string nebo ho předejte přes --connection-string v dab init.
Podporuje DAB schémata PostgreSQL?
Ano. DAB podporuje neveřejná schémata. Odkazování na schéma explicitně v poli entity source pomocí formátu schemaname.tablename (například sales.orders). Uživatel databáze nakonfigurovaný v připojovacím řetězci musí mít USAGE oprávnění ke schématu a SELECTINSERT, , UPDATEnebo DELETE oprávnění k cílovým tabulkám.
Běžné problémy
Nejde se připojit ke kontejneru PostgreSQL
Příznak: DAB se nepodaří spustit s Failed to connect to localhost:5432 nebo podobnou chybou sítě.
Způsobit: Port kontejneru PostgreSQL není namapovaný nebo kontejner není připravený přijímat připojení.
Řešení: Ověřte, že kontejner běží s docker ps a že je port 5432 namapovaný na hostitele. Použijte Host=localhost;Port=5432 v připojovacím řetězci. Pokud se kontejner právě spustil, počkejte několik sekund, než se postgreSQL inicializuje před spuštěním DAB.
Ověření hesla se nezdařilo.
Příznak: Protokoly DAB zobrazují 28P01: password authentication failed for user.
Příčina: Uživatelské jméno nebo heslo v připojovacím řetězci je nesprávné, nebo je uživatel PostgreSQL nakonfigurovaný pro jinou metodu ověřování, například peer nebo ident.
Rozlišení: Ověřte, že přihlašovací údaje odpovídají těm, které jsou nastavené při vytvoření instance nebo kontejneru PostgreSQL. U kontejnerů zkontrolujte proměnné prostředí POSTGRES_PASSWORD a POSTGRES_USER. Pokud běží místně, ověřte, že pg_hba.conf povoluje md5 nebo scram-sha-256 ověřování pro připojujícího se hostitele.
Schéma nebylo nalezeno, pokud entita odkazuje na neveřejné schéma
Příznak: DAB vrátí relation "tablename" does not exist chybu, i když tabulka existuje v databázi.
Příčina: Pole entity source vynechává předponu schématu, takže PostgreSQL standardně prohledává pouze schéma public.
Rozlišení:source Aktualizujte hodnotu dab-config.json tak, aby zahrnovala předponu schématu, například sales.orders. Ověřte, že uživatel databáze má USAGE na schématu, a to spuštěním GRANT USAGE ON SCHEMA sales TO myuser; v psql.
Požadovaná chyba SSL při připojování ke službě Azure Database for PostgreSQL
Příznak: Selhání připojení ke službě Azure Database for PostgreSQL s SSL connection is required.
Příčina: Azure Database for PostgreSQL ve výchozím nastavení vynucuje SSL. Připojení bez PROTOKOLU SSL jsou odmítnuta.
Rozlišení: Přidejte Ssl Mode=Require; k připojovacímu řetězci. Pro úplné ověření certifikátu také nastavte Trust Server Certificate=false a zadejte cestu certifikátu certifikační autority serveru prostřednictvím Root Certificate=path/to/ca.pem. Stáhněte sadu certifikátů z webu Azure Portal v nastavení sítě serveru.
Uložené procedury nejsou podporovány.
Příznak: Konfigurace uložené procedury nebo funkce PostgreSQL jako zdroj entity selže nebo se entita nechová podle očekávání.
Příčina: Data API Builder momentálně nepodporuje uložené procedury pro PostgreSQL. Jedná se o známé omezení sledované v problému GitHubu č. 1023.
Rozlišení: Místo toho použijte tabulku nebo zobrazení jako zdroj entity. Sledujte problém na GitHubu pro aktualizace ohledně přidání podpory uložených procedur PostgreSQL.
Zásady použití databáze se nevynucují při operacích vytvoření.
Příznak: Požadavek na vytvoření mutace nebo POST proběhne úspěšně i tehdy, když by politika databáze měla operaci omezit.
Příčina: Podpora databázových zásad pro akce vytváření v PostgreSQL ještě není implementována. Jedná se o známé omezení sledované v problému GitHubu č. 1334.
Rozlišení: Pomocí oprávnění na základě role omezte přístup k vytváření, dokud nebude k dispozici podpora zásad databáze pro PostgreSQL Create.
Zásady databáze se nevynucují pro operace PUT a PATCH.
Příznak: Požadavek PUT nebo PATCH na entitě PostgreSQL je úspěšný, i když by ho zásady databáze měly omezit.
Příčina: Podpora zásad databáze pro operace PUT a PATCH v PostgreSQL ještě není implementována. Jedná se o známé omezení sledované v problému GitHubu č. 1372.
Rozlišení: Pomocí oprávnění na základě role omezte přístup k aktualizacím, dokud nebude dostupná podpora zásad databáze pro operace aktualizace PostgreSQL.
Ověřování pomocí On-Behalf-Of (OBO) není podporováno.
Příznak: Konfigurace ověřování On-Behalf-Of (OBO) pro instanci DAB využívající PostgreSQL selže nebo se token nepřevede do databáze podle očekávání.
Příčina: Ověřování OBO je aktuálně podporováno pouze pro SQL Server a Azure SQL. Podpora pro PostgreSQL, MySQL a Azure Cosmos DB ještě nebyla implementována. Jedná se o známé omezení sledované v problému GitHubu č. 3159.
Rozlišení: Použijte podporovanou metodu ověřování, jako jsou přihlašovací údaje připojovacího řetězce nebo spravovaná identita pro PostgreSQL. Sledujte issue na GitHubu pro aktualizace týkající se rozšíření podpory OBO na databáze jiné než SQL Server.