列计数与第1行的值计数不匹配

所以我读了其他的帖子,但这个问题是独一无二的。因此,这个 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'

它给我一个错误,“ Column count 与第1行的 value count 不匹配。”因此,我对于列和行在这里是如何应用的这个概念感到迷惑。

2781,3不是指第2781行和第3列吗? 5,5不是指第5行和第5列吗?

452484 次浏览

The error means that you are providing not as much data as the table wp_posts does contain columns. And now the DB engine does not know in which columns to put your data.

To overcome this you must provide the names of the columns you want to fill. Example:

insert into wp_posts (column_name1, column_name2)
values (1, 3)

Look up the table definition and see which columns you want to fill.

And insert means you are inserting a new record. You are not modifying an existing one. Use update for that.

  1. you missed the comma between two values or column name
  2. you put extra values or an extra column name

You should also look at new triggers.

MySQL doesn't show the table name in the error, so you're really left in a lurch. Here's a working example:

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

MySQL will also report "Column count doesn't match value count at row 1" if you try to insert multiple rows without delimiting the row sets in the VALUES section with parentheses, like so:

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

You can resolve the error by providing the column names you are affecting.

> INSERT INTO table_name (column1,column2,column3)
`VALUES(50,'Jon Snow','Eye');`

please note that the semi colon should be added only after the statement providing values

In my case i just passed the wrong name table, so mysql couldn't find the right columns names.