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

แก้ไข Error "Column count doesn't match value count" ใน MySQL

ข้อผิดพลาดนี้เกิดเมื่อจำนวนคอลัมน์ไม่ตรงกับจำนวนค่าที่ระบุในคำสั่ง INSERT

ตัวอย่าง Error

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

สาเหตุ: ตารางมี 2 คอลัมน์ (User_Id, User_Name) แต่ส่งค่าแค่ 1 ค่า

วิธีแก้ไข: ระบุชื่อคอลัมน์ชัดเจน

INSERT INTO yourTableName(yourColumnName1, yourColumnName2, ...) VALUES(yourValue1, yourValue2, ...);

ตัวอย่างที่ถูกต้อง

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)

ตรวจสอบข้อมูล

mysql> SELECT * FROM errorDemo;

ผลลัพธ์:

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

แนวทางป้องกัน

  • ระบุชื่อคอลัมน์เสมอ: INSERT INTO table (col1, col2) VALUES (val1, val2)
  • คอลัมน์ที่เป็น AUTO_INCREMENT หรือมี DEFAULT ไม่ต้องระบุในคำสั่ง INSERT
  • นับจำนวนคอลัมน์และค่าให้ตรงกันก่อนรันคำสั่ง
  • ใช้ IDE หรือ tool ที่แสดงโครงสร้างตารางขณะเขียน query

กรณี INSERT หลายแถวพร้อมกัน

INSERT INTO errorDemo(User_Name) VALUES
('John'), ('Carol'), ('Sam'), ('David');