Mysql Duplicate entry " - Fehler auf ON DUPLICATE KEY UPDATE
Ich bin mit einem Tabelle im Speicher. Es hat mehrere ids und Zähler werden alle Daten ganze zahlen.
Mein code aktualisiert den Zähler um 1, wenn die Daten vorhanden sind oder erstellt eine Linie mit Zähler=1, falls nicht.
Die Abfrage, die ich benutze, ist:
INSERT INTO linked_mem
( id1, id2, id31, id4 cnt)
VALUES (31316, 0, 557158967, 261470594, 1)
ON DUPLICATE KEY UPDATE cnt= cnt+1
Gelegentlich (etwa 5% der Einsätze) bekomme ich "Duplicate entry" [Kennzahlen]' für Schlüssel 1
Was das problem sein könnte? Ist das nicht die ON DUPLICATE KEY UPDATE Teil handhaben soll, den doppelten Schlüssel?
Update: hinzufügen, erstellen Sie die Tabelle der echten Tabelle
CREATE TABLE `linked_mem` (
`li_sid` int(10) unsigned NOT NULL default '0',
`li_id1` int(10) unsigned NOT NULL default '0',
`li_cid1` int(10) unsigned NOT NULL default '0',
`li_id2` int(10) unsigned NOT NULL default '0',
`li_cid2` int(10) unsigned NOT NULL default '0',
`cnt` int(10) unsigned NOT NULL default '1',
`li_filter` int(10) unsigned NOT NULL default '0',
`li_group` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`li_id1`,`li_sid`,`li_cid1`,`li_cid2`,`li_group`,`cnt`,`li_id2`)
) ENGINE=MEMORY DEFAULT CHARSET=latin1
kann u laden Sie die Tabelle erstellen von linked_mem
InformationsquelleAutor Nir | 2009-06-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies kann passieren, wenn Sie ein Feld aktualisieren, die gekennzeichnet ist
UNIQUE
und der zweite Schlüssel Verstoß aufUPDATE
.Update:
Vom Tisch Struktur kann ich sehen, dass es genau Ihren Fall.
Das ist, was passiert:
Entfernen
cnt
von IhremPRIMARY KEY
definition.InformationsquelleAutor Quassnoi
cnt
ist der primary key, vielleicht ist das, was verursacht die Fehler/Unfähigkeit, Sie zu AKTUALISIEREN.InformationsquelleAutor instanceof me
Sind Sie sicher, dass der primäre Schlüssel ist die richtige? Mit diesem Primärschlüssel identifiziert eine Zeile, die auch durch den Wert von cnt, die angeblich zu sein ein Zähler.
Habe ich nicht getestet, aber ich denke, die folgende Abfrage erhalten Sie die Fehlermeldung, wenn Sie starten Sie mit einer leeren Tabelle.
in der vierten Zeile, die (1, 1, 1, 1, 1) wäre aktualisiert (1, 1, 1, 1, 2), aber diese bereits vorhanden ist.
InformationsquelleAutor Martijn
Es ist schwer zu sagen, mit Ihr sinnlose Spaltennamen, aber das Primärschlüssel ist so breit, dass man es sieht verdammt nutzlos. Was ist es eigentlich, und warum wurde dieser Satz von Spalten ausgewählt? Gibt es eine bessere Wahl? Ich denke, die anderen Poster haben Recht, und das update ist gegen die implizite Eindeutigkeit constrant der PK; mit der Zählung, die eine Ihrer PK Spalten, das ist ziemlich viel erwartet werden.
InformationsquelleAutor kquinn
Ich hatte das gleiche problem.
Mit ON DUPLICATE KEY UPDATE und immer noch der Fehler : Doppelten Eintrag
Es wurde verursacht durch eine andere Spalte mit einem unique-Schlüssel index und eine Zeile mit einem leeren Wert in es.
InformationsquelleAutor aaafly