2013-08-21 23 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に列が含まれているほど多くのデータを提供していないことを意味します。そして今、DBエンジンはあなたのデータを置く列を知りません。

これを解決するには、入力する列の名前を入力する必要があります。例:

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

表の定義を参照して、入力する列を確認します。

そしてinsertは、の新しいレコードを挿入することを意味します。あなたは既存のものを変更していません。それにはupdateを使用してください。

9
  1. あなたは、2つの値または列名
  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はまた、あなたが括弧付きVALUESセクションに行セットを区切ることなく、複数行を挿入しようとするので、同様に、「列数が行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'); 
関連する問題