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

ทำไม MySQL ERROR 1062 Duplicate entry จึงเกิดขึ้น?

เกิดเมื่อพยายามเพิ่มค่าซ้ำในคอลัมน์ที่มี UNIQUE KEY หรือ PRIMARY KEY

สร้างตารางมี Unique Key รวม 2 คอลัมน์

mysql> create table DemoTable776 ( 
    FirstValue int, 
    SecondValue int, 
    unique key(FirstValue,SecondValue) ); 
Query OK, 0 rows affected (0.74 sec)

เพิ่มข้อมูล (ครั้งที่ 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'

ข้อมูลที่บันทึกได้ (3 แถวแรก)

mysql> select * from DemoTable776;
+------------+-------------+
| FirstValue | SecondValue |
+------------+-------------+
| 10         | 20          |
| 10         | 40          |
| 40         | 20          |
+------------+-------------+
3 rows in set (0.00 sec)

วิธีแก้: 1) ตรวจสอบข้อมูลก่อน INSERT 2) ใช้ INSERT IGNORE 3) ใช้ ON DUPLICATE KEY UPDATE