Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Khắc phục “LỖI 1136 (21S01):Số cột không khớp với số giá trị ở hàng 1” khi Chèn dữ liệu trong MySQL

Một trong những thông báo lỗi phổ biến hơn trong MySQL như sau:“ ERROR 1136 (21S01):Số cột không khớp với số giá trị ở hàng 1 “.

Lỗi này thường xảy ra khi bạn đang cố gắng chèn dữ liệu vào bảng, nhưng số cột bạn đang cố chèn không khớp với số cột trong bảng.

Nói cách khác, bạn đang cố chèn quá nhiều cột hoặc không đủ cột.

Để khắc phục sự cố này, hãy đảm bảo rằng bạn đang chèn đúng số cột vào bảng.

Ngoài ra, bạn có thể đặt tên cho các cột trong INSERT của mình để MySQL biết dữ liệu của bạn cần được chèn vào những cột nào.

Lỗi cũng có thể xảy ra nếu bạn chuyển sai số cột cho ROW() khi sử dụng VALUES tuyên bố.

Ví dụ về Lỗi

Giả sử chúng ta có bảng sau:

+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
|        1 |        2 |        3 |
|        4 |        5 |        6 |
+----------+----------+----------+

Đoạn mã sau sẽ gây ra lỗi:

INSERT INTO t1 VALUES (7, 8, 9, 10);

Kết quả:

ERROR 1136 (21S01): Column count doesn't match value count at row 1

Trong trường hợp này, tôi đã cố gắng chèn dữ liệu cho bốn cột vào một bảng chỉ có ba cột.

Chúng tôi sẽ gặp lỗi tương tự nếu chúng tôi cố gắng chèn quá ít cột:

INSERT INTO t1 VALUES (7, 8);

Kết quả:

ERROR 1136 (21S01): Column count doesn't match value count at row 1

Giải pháp 1

Giải pháp rõ ràng là chèn đúng số hàng. Do đó, chúng tôi có thể viết lại mã của mình như sau:

INSERT INTO t1 VALUES (7, 8, 9);

Kết quả:

Query OK, 1 row affected (0.00 sec)

Giải pháp 2

Một cách khác để làm điều đó là đặt tên rõ ràng cho các cột mà chúng ta muốn chèn dữ liệu. Kỹ thuật này có thể được sử dụng để chèn ít cột hơn trong bảng.

Ví dụ:

INSERT INTO t1 (column_0, column_1) VALUES (7, 8);

Kết quả:

Query OK, 1 row affected (0.00 sec)

Phương thức này có thể dẫn đến một lỗi khác nếu có bất kỳ ràng buộc nào yêu cầu giá trị được chuyển cho cột đó (ví dụ:nếu bảng có NOT NULL ràng buộc vào cột đó). Do đó, bạn cần đảm bảo rằng mình đang tuân thủ mọi ràng buộc đối với cột khi thực hiện việc này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để biết khi nào vùng chứa mysql docker của tôi đã hoạt động và mysql đã sẵn sàng để thực hiện các truy vấn?

  2. Bảng được chỉ định hai lần, vừa là mục tiêu cho 'CẬP NHẬT' và là nguồn riêng cho dữ liệu trong mysql

  3. Cảnh báo:mysql_fetch_array ():đối số được cung cấp không phải là kết quả MySQL hợp lệ

  4. Cách tạo CRUD đơn giản bằng PHP và MySQL một cách dễ dàng

  5. Lưu trữ JSON trong cơ sở dữ liệu so với việc có một cột mới cho mỗi khóa