Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Khắc phục lỗi "Column count doesn't match value count" trong MySQL

Nguyên nhân

Số lượng giá trị trong VALUES() không khớp với số cột trong bảng (kể cả cột AUTO_INCREMENT).

Ví dụ lỗi

mysql> CREATE TABLE errorDemo (
    User_Id INT NOT NULL AUTO_INCREMENT,
    User_Name VARCHAR(20),
    PRIMARY KEY(User_Id)
);

mysql> INSERT INTO errorDemo VALUES('John');
ERROR 1136 (21S01): Column count doesn't match value count at row 1

Giải pháp: Chỉ định tên cột

INSERT INTO bang (cot1, cot2, ...) VALUES (gia_tri1, gia_tri2, ...);

Sửa đúng

mysql> INSERT INTO errorDemo(User_Name) VALUES('John');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO errorDemo(User_Name) VALUES('Carol');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO errorDemo(User_Name) VALUES('Sam');
Query OK, 1 row affected (0.15 sec)

Kết quả

+---------+-----------+
| User_Id | User_Name |
+---------+-----------+
| 1       | John      |
| 2       | Carol     |
| 3       | Sam       |
+---------+-----------+

Best Practices

  • Luôn chỉ định tên cột trong INSERT (trừ khi INSERT tất cả cột theo đúng thứ tự)
  • Cột AUTO_INCREMENT, DEFAULT, NULL: Bỏ qua trong danh sách cột
  • Dùng INSERT ... SELECT khi copy từ bảng khác
  • Kiểm tra schema: DESC bang; hoặc SHOW COLUMNS FROM bang;

Mẹo: Trong code ứng dụng, dùng ORM/query builder tự động sinh danh sách cột để tránh lỗi này.