Error 1136 เกิดขึ้นเมื่อจำนวนค่าในคำสั่ง INSERT ไม่ตรงกับจำนวนคอลัมน์ของตาราง โดยเฉพาะเมื่อมีคอลัมน์ AUTO_INCREMENT แต่ไม่ได้ระบุค่า หรือระบุคอลัมน์ไม่ครบ
ตัวอย่าง Error
mysql> insert into DemoTable1353 values('Chris',23);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
สาเหตุ: ตารางมี 3 คอลัมน์ (Id, Name, Age) แต่ส่งค่าแค่ 2 ค่า
วิธีแก้ไข
1. ระบุชื่อคอลัมน์ชัดเจน (แนะนำ):
mysql> create table DemoTable1353 (Id int NOT NULL AUTO_INCREMENT, Name varchar(20), Age int, PRIMARY KEY(Id));
mysql> insert into DemoTable1353(Name,Age) values('Chris',23),('David',21),('Bob',24),('John',47);
2. หรือส่ง NULL/0/DEFAULT สำหรับ Auto Increment:
mysql> insert into DemoTable1353 values(NULL,'Chris',23);
ผลลัพธ์ (Id สร้างอัตโนมัติ 1-4)
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 1 | Chris | 23 | | 2 | David | 21 | | 3 | Bob | 24 | | 4 | John | 47 | +----+-------+------+
แนวทางป้องกัน:
- ระบุคอลัมน์เสมอ:
INSERT INTO table (col1, col2) VALUES (...) - ใช้
NULL,0, หรือDEFAULTสำหรับ Auto Increment - ตรวจสอบโครงสร้างตารางด้วย
DESC table_nameก่อน Insert - Error 1136 อาจเกิดจาก Trigger, View, หรือ Generated Column ที่เพิ่มคอลัมน์隐含