Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Lösungen für allgemeine PostgreSQL-Konnektivitäts-, Schema- und SSL-Probleme im Daten-API-Generator.
Häufig gestellte Fragen
Was ist PostgreSQL-Unterstützung in DAB?
Der Daten-API-Generator unterstützt PostgreSQL als relationales Datenbank-Back-End. DAB verbindet sich mit dem Npgsql-Treiber und übersetzt REST- und GraphQL-Anforderungen in SQL-Abfragen. Sowohl selbst gehostete PostgreSQL-Instanzen als auch verwaltete Dienste wie Azure Database for PostgreSQL werden unterstützt.
Welches Verbindungszeichenfolgenformat verwendet PostgreSQL?
DAB verwendet eine ADO.NET-Verbindungszeichenfolge für PostgreSQL. Eine typische Zeichenfolge sieht so aus: Host=localhost;Port=5432;Database=mydb;Username=myuser;Password=mypassword;. Legen Sie die Verbindungszeichenfolge im data-source.connection-string-Feld von dab-config.json fest oder übergeben Sie sie über --connection-string in dab init.
Unterstützt DAB PostgreSQL-Schemas?
Ja. DAB unterstützt nicht öffentliche Schemas. Verweisen Sie explizit auf das Schema im Feld der Entität source mithilfe des Formats schemaname.tablename (z. B sales.orders. ). Der in der Verbindungszeichenfolge konfigurierte Datenbankbenutzer muss die Berechtigung USAGE für das Schema und die Berechtigungen SELECT, INSERT, UPDATE oder DELETE für die Zieltabellen haben.
Häufig auftretende Probleme
Eine Verbindung mit dem PostgreSQL-Container kann nicht hergestellt werden.
Symptom: DAB kann nicht mit Failed to connect to localhost:5432 oder einem ähnlichen Netzwerkfehler gestartet werden.
Ursache: Der PostgreSQL-Containerport ist nicht zugeordnet, oder der Container ist nicht bereit, Verbindungen zu akzeptieren.
Lösung: Bestätigen Sie, dass der Container mit docker ps läuft und dass Port 5432 dem Host zugeordnet ist. Verwenden Sie Host=localhost;Port=5432 in der Verbindungszeichenfolge. Wenn der Container gerade gestartet wurde, erlauben Sie es ein paar Sekunden, bis PostgreSQL initialisiert wird, bevor SIE DAB starten.
Kennwortauthentifizierung fehlgeschlagen
Symptom: DAB-Protokolle zeigen 28P01: password authentication failed for useran.
Ursache: Der Benutzername oder das Kennwort in den Verbindungsdaten ist falsch, oder der PostgreSQL-Benutzer ist für eine andere Authentifizierungsmethode konfiguriert wie peer oder ident.
Auflösung: Überprüfen Sie, ob die Anmeldeinformationen mit denen übereinstimmen, die festgelegt wurden, wenn die PostgreSQL-Instanz oder der Container erstellt wurde. Überprüfen Sie bei Containern die POSTGRES_PASSWORD Variablen und POSTGRES_USER Umgebungsvariablen. Wenn Sie lokal ausgeführt wird, bestätigen Sie pg_hba.conf die Zulässigkeit md5- oder scram-sha-256-Authentifizierung für den Verbindungshost.
Schema nicht gefunden, wenn eine Entität auf ein nicht öffentliches Schema verweist
Symptom: DAB gibt einen relation "tablename" does not exist Fehler zurück, obwohl die Tabelle in der Datenbank vorhanden ist.
Ursache: Das Feld der Entität source lässt das Schemapräfix weg, sodass PostgreSQL standardmäßig nur das public Schema durchsucht.
Auflösung: Aktualisieren Sie den source Wert dab-config.json, sodass dieser das Schemapräfix enthält, z. B. sales.orders. Stellen Sie sicher, dass der Datenbankbenutzer USAGE Berechtigungen für das Schema hat, indem Sie GRANT USAGE ON SCHEMA sales TO myuser; in psql ausführen.
Verbindungsfehler zur Azure-Datenbank für PostgreSQL: SSL erforderlich
Symptom: Verbindungen mit der Azure-Datenbank für PostgreSQL schlagen fehl mit SSL connection is required.
Ursache: Azure Database for PostgreSQL erzwingt STANDARDMÄßIG SSL. Verbindungen ohne SSL werden abgelehnt.
Auflösung: Fügen Sie Ssl Mode=Require; der Verbindungszeichenfolge hinzu. Um die vollständige Zertifikatüberprüfung durchzuführen, legen Sie auch Trust Server Certificate=false fest und geben Sie den Pfad des Server-CA-Zertifikats über Root Certificate=path/to/ca.pem an. Laden Sie das Zertifikatpaket aus dem Azure-Portal unter den Netzwerkeinstellungen des Servers herunter.
Gespeicherte Prozeduren werden nicht unterstützt.
Symptom: Das Konfigurieren einer gespeicherten PostgreSQL-Prozedur oder -Funktion als Entitätsquelle schlägt fehl, oder die Entität verhält sich nicht wie erwartet.
Ursache: Der Daten-API-Generator unterstützt derzeit keine gespeicherten Prozeduren für PostgreSQL. Dies ist eine bekannte Einschränkung, die in GitHub-Problem #1023 nachverfolgt wird.
Auflösung: Verwenden Sie stattdessen eine Tabelle oder Ansicht als Entitätsquelle. Folgen Sie dem GitHub-Issue, um über Aktualisierungen informiert zu werden, wann die Unterstützung für gespeicherte Prozeduren von PostgreSQL hinzugefügt wird.
Datenbankrichtlinie wird für Erstellungsvorgänge nicht erzwungen.
Symptom: Eine Erstellungsmutation oder POST-Anforderung ist auch dann erfolgreich, wenn eine Datenbankrichtlinie den Vorgang einschränken soll.
Ursache: Die Unterstützung von Datenbankrichtlinien für das Erstellen von Aktionen in PostgreSQL ist noch nicht implementiert. Dies ist eine bekannte Einschränkung, die im GitHub-Problem Nr. 1334 nachverfolgt wird.
Auflösung: Verwenden Sie rollenbasierte Berechtigungen, um den Erstellungszugriff einzuschränken, bis die Unterstützung von Datenbankrichtlinien für PostgreSQL Create verfügbar ist.
Datenbankrichtlinie wird für PUT- und PATCH-Vorgänge nicht erzwungen.
Symptom: Eine PUT- oder PATCH-Anforderung für eine PostgreSQL-Entität ist auch dann erfolgreich, wenn eine Datenbankrichtlinie sie einschränken soll.
Ursache: Datenbankrichtlinienunterstützung für PUT- und PATCH-Vorgänge in PostgreSQL ist noch nicht implementiert. Dies ist eine bekannte Einschränkung, die in GitHub-Problem Nr. 1372 nachverfolgt wird.
Auflösung: Verwenden Sie rollenbasierte Berechtigungen, um den Updatezugriff einzuschränken, bis die Datenbankrichtlinienunterstützung für PostgreSQL-Updatevorgänge verfügbar ist.
On-Behalf-Of (OBO)-Authentifizierung wird nicht unterstützt
Symptom: Das Konfigurieren der On-Behalf-Of-Authentifizierung (OBO) für eine Von PostgreSQL gesicherte DAB-Instanz schlägt fehl, oder das Token wird nicht wie erwartet an die Datenbank weitergeleitet.
Ursache: Die OBO-Authentifizierung wird derzeit nur für SQL Server und Azure SQL unterstützt. Die Unterstützung für PostgreSQL, MySQL und Azure Cosmos DB wurde noch nicht implementiert. Dies ist eine bekannte Einschränkung, die in GitHub-Problem #3159 nachverfolgt wird.
Auflösung: Verwenden Sie eine unterstützte Authentifizierungsmethode wie Verbindungszeichenfolgenanmeldeinformationen oder verwaltete Identität für PostgreSQL. Folgen Sie dem GitHub-Issue für Updates, wann die OBO-Unterstützung auf Datenbanken, die kein SQL Server sind, erweitert wird.