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

È stato utile?

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à.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top