所以我读了其他帖子,但这个问题很独特。所以这个SQL转储文件将此作为最后一个条目。
INSERT INTO `wp_posts` VALUES(2781, 3, '2013-01-04 17:24:19', '2013-01-05 00:24:19'.
我正在尝试将此值插入表格...
INSERT INTO `wp_posts` VALUES(5, 5, '2005-04-11 09:54:35', '2005-04-11 17:54:35'
它给出了错误,“列数与第1行的值计数不匹配”所以我迷失在这里如何应用列和行的概念。
2781,3
不是第2781行和第3列吗? 5,5
是不是指第5行和第5列?
答案 0 :(得分:46)
错误意味着您提供的数据不像表wp_posts
包含列那样多。现在数据库引擎不知道在哪些列中放置数据。
要解决此问题,您必须提供要填充的列的名称。例如:
insert into wp_posts (column_name1, column_name2)
values (1, 3)
查找表定义并查看要填充的列。
insert
表示您插入新的记录。您没有修改现有的。请使用update
。
答案 1 :(得分:15)
答案 2 :(得分:8)
你还应该看看新的触发器。
MySQL没有在错误中显示表名,所以你真的陷入了困境。这是一个有效的例子:
use test;
create table blah (id int primary key AUTO_INCREMENT, data varchar(100));
create table audit_blah (audit_id int primary key AUTO_INCREMENT, action enum('INSERT','UPDATE','DELETE'), id int, data varchar(100) null);
insert into audit_blah(action, id, data) values ('INSERT', 1, 'a');
select * from blah;
select * from audit_blah;
truncate table audit_blah;
delimiter //
/* I've commented out "id" below, so the insert fails with an ambiguous error: */
create trigger ai_blah after insert on blah for each row
begin
insert into audit_blah (action, /*id,*/ data) values ('INSERT', /*NEW.id,*/ NEW.data);
end;//
/* This insert is valid, but you'll get an exception from the trigger: */
insert into blah (data) values ('data1');
答案 3 :(得分:5)
MySQL也会报告"列数与第1行和第34行的值计数不匹配;如果您尝试插入多行而不用括号分隔VALUES部分中的行集,如下所示:
INSERT INTO `receiving_table`
(id,
first_name,
last_name)
VALUES
(1002,'Charles','Babbage'),
(1003,'George', 'Boole'),
(1001,'Donald','Chamberlin'),
(1004,'Alan','Turing'),
(1005,'My','Widenius');
答案 4 :(得分:1)
您可以通过提供要影响的列名称来解决该错误。
> INSERT INTO table_name (column1,column2,column3)
`VALUES(50,'Jon Snow','Eye');`
请注意,仅在提供值的语句之后才添加分号