PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL-Tabellenname kann nicht einfach verwendet werden (Beziehung existiert nicht)

Nach dem, was ich gelesen habe, bedeutet dieser Fehler, dass Sie nicht korrekt auf den Tabellennamen verweisen. Ein häufiger Grund ist, dass die Tabelle mit gemischter Schreibweise definiert ist und Sie versuchen, sie nur in Kleinbuchstaben abzufragen.

Mit anderen Worten, Folgendes schlägt fehl:

CREATE TABLE "SF_Bands" ( ... );

SELECT * FROM sf_bands;  -- ERROR!

Verwenden Sie doppelte Anführungszeichen, um Bezeichner abzugrenzen, damit Sie bei der Definition der Tabelle die spezifische Groß-/Kleinschreibung verwenden können.

SELECT * FROM "SF_Bands";

In Bezug auf Ihren Kommentar können Sie dem "Suchpfad" ein Schema hinzufügen, sodass die Abfrage, wenn Sie auf einen Tabellennamen verweisen, ohne sein Schema zu qualifizieren, mit diesem Tabellennamen übereinstimmt, indem jedes Schema der Reihe nach überprüft wird. Genauso wie PATH in der Shell oder include_path in PHP usw. Sie können Ihren aktuellen Schema-Suchpfad überprüfen:

SHOW search_path
  "$user",public

Sie können Ihren Schema-Suchpfad ändern:

SET search_path TO showfinder,public;

Siehe auch http://www.postgresql.org/docs/8.3/static/ddl-schemas.html