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