PostgreSQL错误:INSERT具有比表达式更多的目标列,当它没有时

时间:2014-12-24 15:42:18

标签: postgresql

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

SELECT * FROM parts_finishing;

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

  

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'));

......我得到......

  

错误:INSERT的目标列多于表达式

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

5 个答案:

答案 0 :(得分:25)

删除额外的()

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')
  ;

答案 1 :(得分:6)

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

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

这导致psycopg2产生此错误:

  

错误:INSERT的目标列多于表达式。

答案 2 :(得分:1)

我在使用PostgreSQL的Express js上遇到相同的错误

我解决了。这是我的答案。

插入记录时发生

错误。

由于列名无效且值传递

而发生错误

错误:INSERT的目标列多于表达式

错误:错误:INSERT的目标列多于表达式 名称:“错误”, 长度:116, 严重性:“错误”, 代码:“ 42601”, 详细信息:未定义, 提示:未定义, 位置:“ 294”, internalPosition:未定义, internalQuery:未定义, 其中:未定义, 模式:未定义, 表格:未定义, 列:未定义, dataType:未定义, 约束:未定义, 文件:“ analyze.c”, 行:“ 945”,

这是我的代码圆顶

INSERT INTO student(
  first_name, last_name, email, phone
) 
VALUES 
  ($1, $2, $3, $4), 
values 
  : [ first_name, 
  last_name, 
  email, 
  phone ]

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我也面临着同样的问题。当给定的列数和给定的列值不匹配时,将会出现此问题。