So I'm starting with this...
SELECT * FROM parts_finishing; ...I get this...
id, id_part, id_finish, id_metal, id_description, date, inside_hours_k, inside_rate, outside_material
(0 rows)
...so everything looks fine so far so I do this...
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')); ...and I get...
ERROR: INSERT has more target columns than expressions
Now I've done a few things like ensuring numbers aren't in quotes, are in quotes (would love a table guide to that in regards to integers, numeric types, etc) after I obviously counted the number of column names and values being inserted. I also tried making sure that all the commas are commas...really at a loss here. There are no other columns except for id which is the bigserial primary key.
Remove the extra () :
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') ; the (..., ...) in Postgres is the syntax for a tuple literal; The extra set of ( ) would create a tuple of tuples, which makes no sense.
Also: for numeric literals you don't want the quotes:
(1013, 6, 30, 1, NOW(), 0, 0, 22.43) , ... , assuming all these types are numerical.
I had a similar problem when using SQL string composition with psycopg2 in Python, but the problem was slightly different. I was missing a comma after one of the fields.
INSERT INTO parts_finishing (id_part, id_finish, id_metal) VALUES ( %(id_part)s <-------------------- missing comma %(id_finish)s, %(id_metal)s ); This caused psycopg2 to yield this error:
ERROR: INSERT has more target columns than expressions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With