MySQL su DUPLICATE KEY UPDATE
-
02-10-2019 - |
Domanda
Sono bloccato su una query MySQL utilizzando ON DUPLICATE KEY UPDATE.
sto ottenendo l'errore:
mySQL Error: 1062 - Duplicate entry 'hr2461809-3' for key 'fname'
Il look da tavolo come questo:
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;
E la query che è la rottura è questa:
INSERT INTO images SET picid=732, fname='hr2461809-3', path='pictures/' ON DUPLICATE KEY UPDATE picid=732, fname='hr2461809-3', path='pictures/'
Io sto usando un molto simile interrogazione altrove in app senza problemi. Io non sono sicuro perché questo si rompe uno. Mi aspettavo che quando la chiave univoca sulla fname viene violata, che avrebbe semplicemente aggiornare la riga in cui si è verificata la violazione?
Grazie per qualsiasi aiuto
Soluzione
Penso che si desidera ON DUPLICATE KEY IGNORE
.
stai chiedendo, in caso di collisione chiave, per reinserire gli stessi dati è sufficiente. Non sorprende che questo si traduce in un altro scontro chiave, in quanto è ancora una riga duplicata!
ON DUPLICATE KEY IGNORE
interrompe l'inserto se la riga esiste già.