Ich benutze eine Speichertabelle . Sie hat mehrere Kennungen und einen Zähler. Alle Daten sind Ganzzahlen. Mein Code aktualisiert den Zähler um 1, wenn die Daten vorhanden sind oder erstellt eine Zeile mit counter=1
wenn nicht.
Die von mir verwendete Abfrage lautet:
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 Einfügungen) erhalte ich die Meldung "Doppelter Eintrag '[Schlüsselnummern]' für Schlüssel 1
Was könnte das Problem sein? Sollte der Teil ON DUPLICATE KEY UPDATE nicht den doppelten Schlüssel behandeln?
Update: Hinzufügen einer 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