Heim >Datenbank >MySQL-Tutorial >Warum schlägt meine PostgreSQL-Abfrage mit „Beziehung existiert nicht' fehl, obwohl die Tabelle vorhanden ist?
Das Ausführen einer Datenbankabfrage führt zu dem Fehler „Beziehung existiert nicht“, selbst wenn der Tabellenname korrekt erscheint.
Dieser Fehler weist normalerweise auf ein Problem mit der Referenzierung des Tabellennamens hin. Die häufigste Ursache ist ein Problem mit der Groß-/Kleinschreibung. PostgreSQL unterscheidet bei Tabellennamen zwischen Groß- und Kleinschreibung.
Diese Abfrage schlägt beispielsweise fehl:
<code class="language-sql">CREATE TABLE "SF_Bands" ( ... ); SELECT * FROM sf_bands; -- ERROR!</code>
Die Lösung besteht darin, die Groß-/Kleinschreibung Ihres Tabellennamens genau anzupassen und doppelte Anführungszeichen zu verwenden:
<code class="language-sql">SELECT * FROM "SF_Bands";</code>
Ein anderer Ansatz besteht darin, Ihr search_path
zu ändern. Diese Einstellung bestimmt die Reihenfolge, in der PostgreSQL nach Objekten (wie Tabellen) in Ihrer Datenbank sucht. Durch Hinzufügen des Schemas der Tabelle zum Suchpfad können Sie auf die Tabelle verweisen, ohne das Schema explizit anzugeben.
So überprüfen Sie Ihren aktuellen Suchpfad:
<code class="language-sql">SHOW search_path;</code>
So fügen Sie das Schema showfinder
hinzu (ersetzen Sie es durch Ihr tatsächliches Schema):
<code class="language-sql">SET search_path TO showfinder,public;</code>
Nachdem Sie den Suchpfad angepasst haben, können Sie die Tabelle mit dem Kleinbuchstabennamen abfragen:
<code class="language-sql">SELECT * FROM sf_bands;</code>
Umfassende Details zur Konfiguration search_path
finden Sie in der offiziellen PostgreSQL-Dokumentation: https://www.php.cn/link/d7323519970d0e3680ef5fa1edfe0e56
Das obige ist der detaillierte Inhalt vonWarum schlägt meine PostgreSQL-Abfrage mit „Beziehung existiert nicht' fehl, obwohl die Tabelle vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!