Ich habe gerade den gleichen Fehler erhalten. Meine Tabelle hat nur 1 Zeile und es gibt kein Duplikat.
TLDR: Überprüfen Sie Ihre Fremdschlüssel und stellen Sie sicher, dass der Wert in der übergeordneten Tabelle vorhanden ist. MySQL 5.6.3 kann Ihnen anscheinend den wahren Grund für den Fehler nicht sagen.
mysql> select * from users_sessions;
+---------+----------------------------+---------------------+
| user_id | session_id | last_accessed |
+---------+----------------------------+---------------------+
| 3 | 6n02k8catt2kdn30b92ljtrpc6 | 2019-01-13 23:30:53 |
+---------+----------------------------+---------------------+
1 row in set (0.00 sec)
mysql>
mysql> INSERT INTO `users_sessions` VALUES(3,"fbfibdog1qumlj5mg4kstbagu7","2019-01-14 18:37:15") ON DUPLICATE KEY UPDATE last_accessed = "2019-01-14 18:37:15";
ERROR 1062 (23000): Duplicate entry '3-fbfibdog1qumlj5mg4kstbagu7' for key 'PRIMARY'
Es gibt keinen solchen doppelten Schlüssel!
Ich habe versucht, dieselbe Einfügung ohne die ON DUPLICATE KEY ...Klausel auszuführen, und habe einen besseren Hinweis darauf erhalten, was passiert ist.
mysql> INSERT INTO `users_sessions` VALUES(3,"fbfibdog1qumlj5mg4kstbagu7","2019-01-14 18:37:15");
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`login`.`users_sessions`, CONSTRAINT `fk_sessions_id` FOREIGN KEY (`session_id`) REFERENCES `sessions` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
Jetzt sind wir auf etwas. Daher habe ich versucht, die ursprüngliche Abfrage mit einem anderen Wert auszuführen , der einen übereinstimmenden Wert in der Fremdschlüsseltabelle aufweist. Die Abfrage lief ohne Probleme.
Warum scheint MySQL den falschen Fehler auszugeben? Ich bin mir nicht sicher, aber es hat wahrscheinlich damit zu tun, wie ON DUPLICATE KEY UPDATEes umgesetzt wird. Ich habe versucht, dieselbe Einfüge-Abfrage wie eine REPLACE INTOAbfrage auszuführen, und habe denselben Fehler erhalten.
mysql> REPLACE INTO `users_sessions` VALUES(3,"fbfibdog1qumlj5mg4kstbagu7","2019-01-14 18:37:15");
ERROR 1062 (23000): Duplicate entry '3-fbfibdog1qumlj5mg4kstbagu7' for key 'PRIMARY'
Wenn dieser Fehler ohne ersichtlichen Grund auftritt, überprüfen Sie Ihre Fremdschlüssel. Versuchen Sie auch eine reguläre INSERTAbfrage (anstelle von REPLACE INTOoder INSERT ... ON DUPLICATE KEY UPDATE...).