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>
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>
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!