Erreur PostgreSQL: INSERT a plus de colonnes cibles que d'expressions, quand il n'en a pas

alors je commence avec ça...

SELECT * FROM parts_finishing;

...Je reçois ce...

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

(0 lignes)

... donc tout a l'air bien jusqu'ici donc je fais ceci...

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 cible de colonnes que les expressions

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

17
demandé sur John 2014-12-24 18:42:18

2 réponses

Supprimer les ():

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')
  ;
19
répondu wildplasser 2014-12-24 15:48:29

j'ai eu un problème similaire en utilisant SQL composition de cordes avec psycopg2Python mais le problème est légèrement différent. Il me manquait une virgule après un champ.

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

cela a causé psycopg2 pour un rendement de cette erreur:

erreur: INSERT a plus de colonnes cibles que d'expressions.

3
répondu 2dor 2018-08-01 17:59:03