Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แก้ไข Error 1136: Column count doesn't match value count at row 1 ใน MySQL

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 ที่เพิ่มคอลัมน์隐含