Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Soluzioni per problemi comuni di connettività, schema e SSL di PostgreSQL in Generatore API dati.
Domande comuni
Che cos'è il supporto di PostgreSQL in DAB?
Il generatore di API dati supporta PostgreSQL come back-end di database relazionale. DAB si connette usando il driver Npgsql e converte le richieste REST e GraphQL in query SQL. Sono supportate sia le istanze self-hosted di PostgreSQL che i servizi gestiti, ad esempio Database di Azure per PostgreSQL.
Quale formato di stringa di connessione usa PostgreSQL?
DAB utilizza una stringa di connessione in stile ADO.NET per PostgreSQL. Una stringa tipica è simile a Host=localhost;Port=5432;Database=mydb;Username=myuser;Password=mypassword;. Impostare la stringa di connessione nel data-source.connection-string campo di dab-config.json o passarla tramite --connection-string in dab init.
DAB supporta gli schemi PostgreSQL?
Sì. DAB supporta schemi non pubblici. Fare riferimento allo schema in modo esplicito nel campo dell'entità source usando il formato schemaname.tablename , ad esempio sales.orders. L'utente del database configurato nella stringa di connessione deve disporre del privilegio USAGE sullo schema e dei privilegi SELECT, INSERT, UPDATE o DELETE sulle tabelle di destinazione.
Problemi comuni
Impossibile connettersi al contenitore PostgreSQL
Sintomo: DAB non può iniziare con Failed to connect to localhost:5432 o con un errore di rete simile.
Causa: La porta del contenitore PostgreSQL non è mappata o il contenitore non è pronto per accettare le connessioni.
Risoluzione: Verificare che il contenitore sia in esecuzione con docker ps e che la porta 5432 sia mappata all'host. Usare Host=localhost;Port=5432 nella stringa di connessione. Se il contenitore è stato appena avviato, attendere alcuni secondi per l'inizializzazione di PostgreSQL prima di avviare DAB.
Autenticazione della password non riuscita
Sintomo: I log DAB mostrano 28P01: password authentication failed for user.
Causa: Il nome utente o la password nella stringa di connessione non è corretto oppure l'utente PostgreSQL è configurato per un metodo di autenticazione diverso, peer ad esempio o ident.
Risoluzione: Verificare che le credenziali corrispondano a quelle impostate al momento della creazione dell'istanza o del contenitore PostgreSQL. Per i contenitori, controllare le variabili di ambiente POSTGRES_PASSWORD e POSTGRES_USER. Se è in esecuzione in locale, verificare che l'host di connessione consenta l'autenticazione md5 o scram-sha-256.
Schema non trovato quando l'entità fa riferimento a uno schema non pubblico
Sintomo: DAB restituisce un relation "tablename" does not exist errore anche se la tabella esiste nel database.
Causa: Il campo dell'entità omette il prefisso dello source schema, quindi PostgreSQL cerca solo lo public schema per impostazione predefinita.
Risoluzione: Aggiornare il source valore in dab-config.json per includere il prefisso dello schema, ad esempio sales.orders. Verificare che l'utente del database abbia USAGE sullo schema eseguendo GRANT USAGE ON SCHEMA sales TO myuser; in psql.
Errore di SSL richiesto durante la connessione al database di Azure per PostgreSQL
Sintomo: Le connessioni a Database di Azure per PostgreSQL hanno esito negativo con SSL connection is required.
Causa: Database di Azure per PostgreSQL applica SSL per impostazione predefinita. Le connessioni senza SSL vengono rifiutate.
Risoluzione: Aggiungere Ssl Mode=Require; alla stringa di connessione. Per la convalida completa del certificato, impostare Trust Server Certificate=false e specificare anche il percorso del certificato ca del server tramite Root Certificate=path/to/ca.pem. Scaricare il bundle di certificati dal portale di Azure nelle impostazioni di rete del server.
Le procedure memorizzate non sono supportate
Sintomo: La configurazione di una stored procedure o di una funzione PostgreSQL come origine di entità ha esito negativo o l'entità non si comporta come previsto.
Causa: Il generatore di API dati attualmente non supporta le stored procedure per PostgreSQL. Si tratta di una limitazione nota rilevata nel problema di GitHub #1023.
Risoluzione: Usare invece una tabella o una vista come origine dell'entità. Seguire l'issue di GitHub per gli aggiornamenti su quando viene aggiunto il supporto per le stored procedures di PostgreSQL.
Le politiche del database non vengono applicate alle operazioni di creazione.
Sintomo: Una richiesta di creazione della mutazione o POST ha esito positivo anche quando un criterio di database deve limitare l'operazione.
Causa: Il supporto dei criteri di database per la creazione di azioni in PostgreSQL non è ancora implementato. Si tratta di una limitazione nota rilevata nel problema di GitHub n. 1334.
Risoluzione: Usare le autorizzazioni basate sui ruoli per limitare l'accesso alla creazione fino a quando non è disponibile il supporto dei criteri per la creazione nel database di PostgreSQL.
I criteri di database non vengono applicati per le operazioni PUT e PATCH
Sintomo: Una richiesta PUT o PATCH in un'entità PostgreSQL ha esito positivo anche quando un criterio di database deve limitarlo.
Causa: Il supporto dei criteri di database per le operazioni PUT e PATCH in PostgreSQL non è ancora implementato. Si tratta di una limitazione nota rilevata nel problema di GitHub #1372.
Risoluzione: Usare le autorizzazioni basate sui ruoli per limitare l'accesso agli aggiornamenti fino a quando non è disponibile il supporto dei criteri di database per le operazioni di aggiornamento postgreSQL.
L'autenticazione on-Behalf-Of (OBO) non è supportata
Sintomo: La configurazione dell'autenticazione OBO (On-Behalf-Of) per un'istanza DAB supportata da PostgreSQL ha esito negativo o il token non viene inoltrato al database come previsto.
Causa: L'autenticazione OBO è attualmente supportata solo per SQL Server e Azure SQL. Il supporto per PostgreSQL, MySQL e Azure Cosmos DB non è ancora stato implementato. Si tratta di una limitazione nota rilevata nel problema di GitHub #3159.
Risoluzione: Usare un metodo di autenticazione supportato, ad esempio le credenziali della stringa di connessione o l'identità gestita per PostgreSQL. Seguire la segnalazione su GitHub per aggiornamenti su quando il supporto OBO verrà esteso ai database diversi da SQL Server.