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

Nguyên nhân và khắc phục lỗi ERROR 1062 (23000): Duplicate entry trong MySQL

Lỗi ERROR 1062 (23000): Duplicate entry xảy ra khi vi phạm ràng buộc UNIQUE hoặc PRIMARY KEY bằng cách chèn giá trị trùng lặp.

Tạo bảng có khóa duy nhất tổ hợp

mysql> CREATE TABLE DemoTable776(
    FirstValue INT,
    SecondValue INT,
    UNIQUE KEY(FirstValue, SecondValue)
); 
Query OK, 0 rows affected (0.74 sec)

Chèn dữ liệu - gây lỗi ở lần 4

mysql> INSERT INTO DemoTable776 VALUES(10,20); 
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable776 VALUES(10,40); 
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable776 VALUES(40,20); 
Query OK, 1 row affected (0.26 sec)
mysql> INSERT INTO DemoTable776 VALUES(10,20); 
ERROR 1062 (23000): Duplicate entry '10-20' for key 'FirstValue'

Kết quả sau 3 lần chèn thành công:

+------------+-------------+
| FirstValue | SecondValue |
+------------+-------------+
| 10         | 20          |
| 10         | 40          |
| 40         | 20          |
+------------+-------------+

Cách khắc phục

  • Kiểm tra trước khi chèn: SELECT COUNT(*) FROM table WHERE col1=val1 AND col2=val2
  • Dùng INSERT IGNORE: Bỏ qua lỗi, không chèn bản ghi trùng
  • Dùng ON DUPLICATE KEY UPDATE: Cập nhật nếu đã tồn tại
  • Dùng REPLACE INTO: Xóa bản ghi cũ, chèn bản ghi mới