Heim >Datenbank >MySQL-Tutorial >Warum schlägt meine PostgreSQL-Abfrage mit der Meldung „Spalte „Kontinent' existiert nicht' fehl, obwohl die Spalte vorhanden ist?

Warum schlägt meine PostgreSQL-Abfrage mit der Meldung „Spalte „Kontinent' existiert nicht' fehl, obwohl die Spalte vorhanden ist?

Susan Sarandon
Susan SarandonOriginal
2025-01-20 19:58:12625Durchsuche

Why Does My PostgreSQL Query Fail with

PostgreSQL-Datenbankfehler: Spalte „Kontinent“ existiert nicht

Problemhintergrund:

Eine Java-Anwendung hat beim Abfragen der Datenbank einen Fehler festgestellt, der besagt, dass die Spalte „Kontinent“ in einer bestimmten Tabelle nicht vorhanden ist, obwohl bestätigt wurde, dass die Spalte in pgAdmin 4 vorhanden ist. Die Abfrage versucht, aus dieser Spalte Nicht-Null-Werte auszuwählen.

Problemdiagnose:

  • Über pgAdmin 4 überprüft, dass die Spalte „Kontinent“ in der Tabelle „network.countries“ vorhanden ist.
  • Die Abfrage zeigt, dass die Anwendung Spalten- und Tabellennamen korrekt erhält, ohne Rechtschreib- oder Semantikfehler.
  • Die Fehlermeldung deutet darauf hin, dass die Spaltennamen möglicherweise mithilfe eines anderen Schemas oder einer anderen Tabelle referenziert werden müssen.

Lösung:

Beheben Sie dieses Problem, indem Sie die Spaltennamen in der Abfrage in doppelte Anführungszeichen setzen:

<code class="language-sql">SELECT "Continent"
FROM network.countries
...</code>

PostgreSQL verlangt, dass Spaltennamen in doppelte Anführungszeichen gesetzt werden müssen, wenn sie Sonderzeichen enthalten oder mit Schlüsselwörtern in Konflikt stehen. In diesem Fall ist „Continent“ ein reserviertes Schlüsselwort in PostgreSQL und muss daher in Anführungszeichen gesetzt werden.

Zusätzliche Hinweise:

  • Beim direkten Ausführen der Abfrage in pgAdmin 4 tritt möglicherweise nicht derselbe Fehler auf, da die Schnittstelle Anführungszeichen automatisch verarbeitet.
  • Die Verwendung von „Länder.Kontinent“ in der Abfrage funktioniert möglicherweise auch, führt jedoch zu einer Abhängigkeit vom Muster „Länder“. Das Einschließen der Spaltennamen in doppelte Anführungszeichen bietet eine allgemeinere Lösung, die unabhängig vom Schema der Tabelle funktioniert.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine PostgreSQL-Abfrage mit der Meldung „Spalte „Kontinent' existiert nicht' fehl, obwohl die Spalte vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn