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

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

Lỗi 1136 xảy ra khi số giá trị trong VALUES không khớp số cột trong bảng (thường do quên cột AUTO_INCREMENT).

Ví dụ lỗi

mysql> CREATE TABLE DemoTable1353 (Id INT NOT NULL AUTO_INCREMENT, Name VARCHAR(20), Age INT, PRIMARY KEY(Id));
mysql> INSERT INTO DemoTable1353 VALUES('Chris', 23); -- LỖI: 2 giá trị cho 3 cột
ERROR 1136 (21S01): Column count doesn't match value count at row 1

Giải pháp

Cách 1: Chỉ định cột (khuyến khích)

mysql> INSERT INTO DemoTable1353(Name, Age) VALUES('Chris', 23); -- OK, Id tự sinh

Cách 2: Truyền NULL/0/DEFAULT cho AUTO_INCREMENT

mysql> INSERT INTO DemoTable1353 VALUES(NULL, 'Chris', 23); -- OK
mysql> INSERT INTO DemoTable1353 VALUES(0, 'Chris', 23);   -- OK
mysql> INSERT INTO DemoTable1353 VALUES(DEFAULT, 'Chris', 23); -- OK

Kết quả sau khi chèn 4 hàng:

mysql> SELECT * FROM DemoTable1353;
+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
| 1  | Chris | 23   |
| 2  | David | 21   |
| 3  | Bob   | 24   |
| 4  | John  | 47   |
+----+-------+------+

Best practice: Luôn viết INSERT INTO bang (cot1, cot2) VALUES (...) - rõ ràng, an toàn khi schema thay đổi.