web-dev-qa-db-fra.com

ERREUR: la colonne de relation n'existe pas PostgreSQL, impossible d'exécuter la requête d'insertion

Salut, j'essaie d'insérer dans un testeur de table3 il échoue lorsque j'utilise la syntaxe

insert into tester3 (UN0, UN1) values ( 1, 'jishnu1');

mais

insert into tester3 values ( 1, 'jishnu1');

fonctionne bien.

mydb=# CREATE TABLE tester3
mydb-#    (
mydb(#     "UN0" integer,
mydb(#     "UN1" VARCHAR(40)
mydb(#    );
CREATE TABLE
mydb=# insert into tester3 (UN0, UN1) values ( 1, 'jishnu1');
ERROR:  column "un0" of relation "tester3" does not exist
mydb=# \d tester3
           Table "public.tester3"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 UN0    | integer               |
 UN1    | character varying(40) |

Je pense que je manque quelque chose de très trivial, j'ai essayé d'autres noms de colonnes, certains fonctionnent bien et certains ne fonctionnent pas. Je suis confus. PostgreSQL a-t-il une restriction dans les noms de colonnes pour lesquels fonctionne la 1ère syntaxe de la requête d'insertion?


Modifier:

Et comme Frank Heikens a souligné les autres noms de colonnes qui fonctionnaient sans guillemets où en minuscules .

La colonne en minuscules est la norme dans PostgreSQL et fonctionne également sans guillemets

13
Jishnu Prathap

Si vous définissez les colonnes avec des guillemets doubles, vous devez les utiliser lorsque vous vous référez à la colonne:

insert into tester3 ("UN0", "UN1")
     values ( 1, 'jishnu1');

Je vous suggère de supprimer les guillemets doubles des noms de colonne dans le CREATE TABLE déclaration.

16
Gordon Linoff

essayez ceci en utilisant des guillemets doubles pour les noms de vos colonnes

insert into tester3 ("UN0", "UN1") values ( 1, 'jishnu1');
6
Ameya Deshpande