Frage

Ich bin auf einer mySQL Abfrage fest mit ON DUPLICATE KEY UPDATE.

Ich erhalte die Fehlermeldung:

mySQL Error: 1062 - Duplicate entry 'hr2461809-3' for key 'fname'

Die Tabelle sieht wie folgt aus:

id int(10) NOT NULL default '0',   
picid int(10) unsigned NOT NULL default '0',
fname varchar(255) NOT NULL default '',  
type varchar(5) NOT NULL default '.jpg',  
path varchar(255) NOT NULL default '',    
PRIMARY KEY  (id),  
UNIQUE KEY fname (fname),  
KEY picid (propid)  
) ENGINE=MyISAM DEFAULT CHARSET=utf8;  

Und die Abfrage, die zu brechen sind, ist dies:

INSERT INTO images SET picid=732, fname='hr2461809-3', path='pictures/' ON DUPLICATE KEY UPDATE picid=732,  fname='hr2461809-3', path='pictures/' 

Ich verwende eine sehr ähnliche Abfrage an anderer Stelle in der App ohne Probleme. Ich bin mir nicht sicher, warum dies ein bricht. Ich erwartete, dass, wenn der UNIQUE KEY auf fname verletzt wird, dass es einfach die Zeile aktualisieren, wenn die Verletzung aufgetreten?

Vielen Dank für jede Hilfe

War es hilfreich?

Lösung

Ich glaube, Sie ON DUPLICATE KEY IGNORE wollen.

Sie fragen, im Falle einer Schlüsselkollision, um einfach wieder einsetzen gleichen Daten. Wenig überraschend diese Ergebnisse in einem anderen Schlüsselkollision, da es nach wie vor eine doppelte Zeile ist!

ON DUPLICATE KEY IGNORE den Einsatz abbrechen, wenn die Zeile bereits vorhanden ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top