2013-08-21 41 views
25

因此,我閱讀其他帖子,但這個問題是獨一無二的。所以這個SQL轉儲文件有這個作爲最後一個條目。列數不匹配第1行的值計數

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列?

回答

29

該錯誤表示您提供的數據不如表wp_posts確實包含列那麼多。現在數據庫引擎不知道在哪些列中放置數據。

要解決這個問題,您必須提供要填寫的列的名稱。示例:

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

查找表定義並查看要填寫的列。

And insert表示您是插入新的記錄。你沒有修改現有的。爲此,請使用update

9
  1. 你錯過了兩個值或列名
  2. 你把多餘的值或一個額外的列名
3

你也應該看看新的觸發之間的逗號。

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

MySQL也將報告「列數並不在行1匹配值計數」如果你試圖插入多行,而不在值部分用括號劃定行集,像這樣:

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'); 
相關問題