Maison >base de données >tutoriel mysql >Pourquoi est-ce que j'obtiens une erreur « La colonne « X » n'existe pas » dans mon instruction PostgreSQL INSERT ?
Lors de l'insertion de données dans une table PostgreSQL, l'erreur "la colonne "X" n'existe pas" signifie souvent un problème avec les valeurs fournies dans l'instruction INSERT
. Cela provient généralement de chaînes littérales mal formatées.
Le message d'erreur, tel qu'indiqué dans le problème d'origine, indique probablement un problème avec la colonne last_config_version
. Les citations incorrectes de la valeur de la chaîne sont la cause la plus courante.
Le problème : citations de chaînes incorrectes
PostgreSQL utilise des guillemets simples ('
) pour délimiter les chaînes littérales. L'utilisation de guillemets doubles ("
) traite la chaîne comme un identifiant de colonne, ce qui entraîne l'erreur « la colonne « X » n'existe pas » si cette chaîne n'est pas un nom de colonne réel.
Solution 1 : Corriger les citations de chaînes
La bonne façon d'insérer la valeur last_config_version
est de la mettre entre guillemets simples :
<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>
Notez l'utilisation de guillemets simples autour de la valeur last_config_version
. De plus, dans la chaîne de type change_description
JSON, les guillemets simples sont échappés en les doublant (''
).
Solution 2 : Gestion des guillemets uniques dans les données
Si vos données nécessitent des guillemets simples, vous devez les échapper en les doublant. Par exemple :
<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>
Cela suppose que change_description
est destiné à contenir des données JSON et que vous utilisez des guillemets doubles pour les clés et les valeurs dans la chaîne JSON, ce qui est une pratique JSON standard. Si ce n'est pas JSON, ajustez en conséquence en utilisant l'échappement approprié pour le type de données.
En citant correctement les littéraux de chaîne et en échappant les guillemets simples si nécessaire, vos instructions INSERT
s'exécuteront avec succès, évitant ainsi l'erreur « la colonne « X » n'existe pas ». Vérifiez toujours votre syntaxe, en particulier autour des valeurs de chaîne, pour éviter ce problème courant de PostgreSQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!