PostgreSQL-Datenbankfehler: „Spalte ‚X‘ existiert nicht“
Im angegebenen PostgreSQL-Code führt der Versuch, Daten in die Tabelle einzufügen, zu folgendem Fehler:
Fehlermeldung:
<code>psql:createConfigChangeLog.sql:11: ERROR: column "5837-2016-08-24_09-12-22" does not exist</code>
Fehlergrund:
Dieser Fehler tritt auf, weil PostgreSQL den Wert der Spalte last_config_version
als Spaltennamen und nicht als Literalzeichenfolge interpretiert. PostgreSQL erfordert, dass Zeichenfolgenkonstanten in einfache Anführungszeichen gesetzt werden.
Lösung:
Um dieses Problem zu lösen, sollte die Literalzeichenfolge der Spalte last_config_version
in einfache Anführungszeichen gesetzt werden:
<code class="language-sql">INSERT INTO config_change_log(last_config_version, is_done, change_description ) VALUES('5837-2016-08-24_09-12-22', false, '{ ''key'':''value''}');</code>
Escape von einfachen Anführungszeichen in Daten:
Alternativ können einfache Anführungszeichen in den Daten durch doppeltes Schreiben maskiert werden:
<code class="language-sql">INSERT INTO config_change_log(last_config_version, is_done, change_description ) VALUES("5837-2016-08-24_09-12-22", false, "{ 'key':'value'}");</code>
Bitte beachten Sie, dass die erste Methode einfache Anführungszeichen verwendet und die inneren einfachen Anführungszeichen maskiert, was der standardmäßigere und empfohlene Ansatz ist. Die zweite Methode verwendet doppelte Anführungszeichen, was in manchen Fällen zwar funktioniert, aber nicht so klar und portabel ist wie die erste Methode.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine PostgreSQL-INSERT-Anweisung mit der Fehlermeldung „Spalte „X' existiert nicht' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!