107 votes

Impossible de faire fonctionner une simple insertion PostgreSQL

J'essaie d'effectuer une simple insertion dans une table postgres, mais je reçois une erreur indiquant que la valeur que j'essaie d'insérer est interprétée comme un nom de colonne.

INSERT INTO "imageTagBusinessMainCategory"
(id, businessMainCategory)
VALUES
(DEFAULT, "auto dealer")

Où id est configuré pour être la clé primaire, et auto incrémenté, et non nul. Ce sont les cases que j'ai cochées lorsque j'ai configuré la table dans phpPgAdmin.

J'obtiens cependant cette erreur :

ERROR: ERROR: column "auto dealer" does not exist
Query = INSERT
INTO "imageTagBusinessMainCategory"
(id, businessMainCategory)
VALUES
(DEFAULT,
"auto dealer")

J'ai mis le nom de ma table entre guillemets, comme je l'ai lu. aquí Je devrais.

Et utilisé DEFAULT pour auto-incrémenter l'id comme je l'ai lu. aquí Je devrais.

Des idées ? Merci !

207voto

Matt Points 3825

Utilice 'auto dealer' à la place. PostgreSQL interprète " comme étant des guillemets pour les identifiants, ' comme étant des guillemets pour les chaînes de caractères.

Aussi :

  • S'il s'agit d'un nouveau projet, n'utilisez pas de tableaux à casse mixte ; c'est une source de frustration par la suite. Au lieu de pouvoir utiliser n'importe quelle casse dans dans vos instructions SQL, vous devez à la fois citer le nom de l'identifiant et faire la casse correcte.

  • Il n'est pas nécessaire de préciser id / DEFAULT vous êtes vous lui demandez de faire ce qu'il aurait déjà fait. Je n'ai pas rencontré de SGBD qui vous demande d'inclure columnName / DEFAULT si vous voulez qu'il le fasse mettre la valeur par défaut dans la colonne, donc je ne pense pas que cette paire KV supplémentaire supplémentaire ne rendra pas ce qui se passe plus clair pour quiconque lira plus tard votre votre code plus tard.

12voto

Randy Points 12194
INSERT INTO "imageTagBusinessMainCategory"
("businessMainCategory")
VALUES
('auto dealer')

EDIT : Ajout de guillemets autour du nom de la colonne

4voto

randomness Points 126

Postgres, Oracle etc. s'attendent à ce que le nom de la colonne soit entre guillemets s'il est en majuscules. Donc, soit vous créez une convention de minuscules ou de majuscules pour les colonnes de votre table, soit vous utilisez des guillemets comme le suggère David Faber.

INSERT INTO "imageTagBusinessMainCategory"
("businessMainCategory")
VALUES
('auto dealer')

0voto

Cristea Points 185

Dans mon cas, j'ai dû changer le nom de la colonne de "camelCase" à "camelCase". 'isAdmin' à snake_case 'is_admin' .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X