PostgreSQL错误:INSERT具有比表达式更多的目标列,而不是表达式

Joh*_*ohn 24 postgresql

所以我从这开始......

SELECT * FROM parts_finishing;
Run Code Online (Sandbox Code Playgroud)

......我明白了......

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

(0行)

...所以到目前为止一切都很好,所以我这样做......

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'));
Run Code Online (Sandbox Code Playgroud)

......我明白了......

错误:INSERT具有比表达式更多的目标列

现在我已经完成了一些事情,例如确保数字不在引号中,在引号中(希望在整数,数字类型等方面有一个表格指南)之后我明显地计算了列名称和值的数量插入.我也试着确保所有的逗号都是逗号...真的在这里不知所措.除了id哪个列之外没有其他列bigserial primary key.

wil*_*ser 30

删除额外的():

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')
  ;
Run Code Online (Sandbox Code Playgroud)


2do*_*dor 8

Python中使用SQL字符串组合时,我遇到了类似的问题,但问题略有不同。在其中一个字段之后,我缺少逗号。psycopg2

INSERT INTO parts_finishing
(id_part, id_finish, id_metal)
VALUES (
    %(id_part)s <-------------------- missing comma
    %(id_finish)s,
    %(id_metal)s
);
Run Code Online (Sandbox Code Playgroud)

这导致psycopg2产生此错误:

错误:INSERT具有比表达式更多的目标列。


Chr*_*ssy 6

这发生在我的大插入中,一切正常(逗号),我花了一段时间才注意到我插入了错误的表,当然数据库不知道你的意图。复制粘贴是万恶之源... :-)


Har*_*thi 5

我也遇到了同样的问题。当给定的列数和给定的列值不匹配时,它会被引发。