2013-08-21 38 views
25

Vì vậy, tôi đọc các bài đăng khác nhưng câu hỏi này là duy nhất. Vì vậy, tệp kết xuất SQL này có tệp này làm mục nhập cuối cùng.Số cột không khớp với số lượng giá trị tại hàng 1

INSERT INTO `wp_posts` VALUES(2781, 3, '2013-01-04 17:24:19', '2013-01-05 00:24:19'. 

Tôi đang cố gắng để chèn giá trị này để bàn ...

INSERT INTO `wp_posts` VALUES(5, 5, '2005-04-11 09:54:35', '2005-04-11 17:54:35' 

nó mang lại cho tôi những lỗi, "đếm cột không khớp với số lượng giá trị ở hàng 1." Vì vậy, tôi bị mất trên khái niệm về cách cột và hàng áp dụng ở đây.

Không 2781,3 có nghĩa là hàng 2781 và cột 3? Và không 5,5 có nghĩa là hàng 5 và cột 5?

Trả lời

29

Lỗi có nghĩa là bạn đang cung cấp không nhiều dữ liệu như bảng wp_posts không chứa cột. Và bây giờ các công cụ DB không biết trong đó cột để đưa dữ liệu của bạn.

Để khắc phục điều này, bạn phải cung cấp tên của các cột bạn muốn điền. Ví dụ:

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

Tra cứu định nghĩa bảng và xem cột bạn muốn điền.

insert có nghĩa là bạn đang chèn bản ghi mới. Bạn không sửa đổi cái hiện có. Sử dụng update cho điều đó.

9
  1. bạn bỏ lỡ dấu phẩy giữa hai giá trị hoặc tên cột
  2. bạn đặt giá trị thêm hay một tên cột thêm
3

Bạn cũng nên xem xét trigger mới.

MySQL không hiển thị tên bảng trong lỗi, vì vậy bạn thực sự bị bỏ lại. Dưới đây là một ví dụ làm việc:

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 cũng sẽ báo cáo "đếm cột không khớp với số lượng giá trị tại dòng 1" nếu bạn cố gắng chèn nhiều hàng mà không phân chia ranh giới các bộ liên tiếp trong phần giá trị với dấu ngoặc đơn, như vậy :

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'); 
Các vấn đề liên quan