web-dev-qa-db-fra.com

PostgreSQL ERROR: INSERT a plus de colonnes cible que d'expressions, quand ce n'est pas le cas

Donc je commence avec ça ...

SELECT * FROM parts_finishing;

...J'ai compris...

id, id_part, id_finish, id_metal, id_description, date, inside_hours_k, inside_rate, outside_material

(0 rangées)

... donc tout va bien jusqu'à présent alors je fais ça ...

INSERT INTO parts_finishing 
(
 id_part, id_finish, id_metal, id_description, 
 date, inside_hours_k, inside_rate, outside_material
) VALUES (
('1013', '6', '30', '1', NOW(), '0', '0', '22.43'), 
('1013', '6', '30', '2', NOW(), '0', '0', '32.45'));

... et je reçois ...

ERREUR: INSERT a plus de colonnes cible que d'expressions

Maintenant, j'ai fait quelques choses, comme par exemple m'assurer que les nombres ne sont pas entre guillemets, entre guillemets (j'aimerais un guide de table à ce sujet en ce qui concerne les entiers, les types numériques, etc.) après J'ai évidemment compté le nombre de colonnes noms et valeurs insérés. J'ai aussi essayé de faire en sorte que toutes les virgules soient des virgules ... vraiment désemparées ici. Il n'y a pas d'autres colonnes à l'exception de id qui est la bigserialprimary key.

20
John

Supprimez le () supplémentaire:

INSERT INTO parts_finishing 
(
 id_part, id_finish, id_metal, id_description, 
 date, inside_hours_k, inside_rate, outside_material
) VALUES 
  ('1013', '6', '30', '1', NOW(), '0', '0', '22.43')
, ('1013', '6', '30', '2', NOW(), '0', '0', '32.45')
  ;
25
wildplasser

J'ai eu un problème similaire en utilisantSQLcomposition de chaînes avec psycopg2 dans Python , mais le problème était légèrement différent. Il me manquait une virgule après l'un des champs.

INSERT INTO parts_finishing
(id_part, id_finish, id_metal)
VALUES (
    %(id_part)s <-------------------- missing comma
    %(id_finish)s,
    %(id_metal)s
);

Cela a provoqué psycopg2 cette erreur:

ERREUR: INSERT a plus de colonnes cible que d'expressions.

3
2dor

Cela m'est arrivé dans une grande insertion, tout était ok (virgule), il m'a fallu un certain temps pour remarquer que je l'inscrivais dans le mauvais tableau bien sûr, le DB ne connaît pas vos intentions . Copier -Paste est la racine de tout le mal ... :-)

0
Christophe Roussy