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 bigserial
primary key
.
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')
;
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.
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 ... :-)