Heim > Datenbank > MySQL-Tutorial > Warum schlägt meine Postgres-DELETE-Abfrage mit der Meldung „Spalte existiert nicht' fehl?

Warum schlägt meine Postgres-DELETE-Abfrage mit der Meldung „Spalte existiert nicht' fehl?

DDD
Freigeben: 2025-01-10 08:35:43
Original
566 Leute haben es durchsucht

Why Does My Postgres DELETE Query Fail with

Postgres DELETE-Abfragefehler: „Spalte existiert nicht“

Beim Ausführen der DELETE-Anweisung in PostgreSQL kann der Fehler „FEHLER: Spalte „Spaltenname“ existiert nicht“ auftreten. Dieser verwirrende Fehler tritt normalerweise auf, wenn eine Variable in einer Abfragebedingung in doppelte Anführungszeichen (") eingeschlossen ist, die PostgreSQL als Spaltennamen statt als Wert interpretiert.

Zum Beispiel führt die folgende Abfrage zu dem oben genannten Fehler:

<code class="language-sql">delete from "Tasks" where id = "fc1f56b5-ff41-43ed-b27c-39eac9354323";</code>
Nach dem Login kopieren

Die Fehlermeldung weist darauf hin, dass PostgreSQL versucht, eine Spalte mit dem Namen „fc1f56b5-ff41-43ed-b27c-39eac9354323“ in der Tabelle „Aufgaben“ zu finden. Diese Spalte existiert jedoch nicht.

Das Problem besteht darin, dass PostgreSQL alles, was in doppelte Anführungszeichen (") eingeschlossen ist, als Bezeichner behandelt, einschließlich Tabellennamen, Prozedurnamen und Spaltennamen. In diesem Fall behandelt PostgreSQL aufgrund der Verwendung doppelter Anführungszeichen fälschlicherweise den Wert „fc1f56b5“. - ff41-43ed-b27c-39eac9354323“ wird als Spaltenname interpretiert.

Um dieses Problem zu beheben, stellen Sie sicher, dass Zeichenkonstanten in einfache Anführungszeichen (') statt in doppelte Anführungszeichen eingeschlossen werden. Einfache Anführungszeichen ermöglichen es PostgreSQL, den angegebenen Wert korrekt als Konstante und nicht als Spaltennamen zu erkennen. Die richtige Abfrage sollte sein:

<code class="language-sql">delete from "Tasks" where id = 'fc1f56b5-ff41-43ed-b27c-39eac9354323';</code>
Nach dem Login kopieren

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

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage