Question

Je suis bloqué sur une requête mySQL en utilisant Duplicate KEY UPDATE.

Je reçois l'erreur:

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

Le tableau se présente comme suit:

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;  

Et la requête qui est la rupture est la suivante:

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

J'utilise une requête très similaire ailleurs dans l'application sans problème. Je ne sais pas pourquoi celui-ci pauses. Je pensais que lorsque la clé UNIQUE sur FNAME se violé, qu'il suffit de mettre à jour la ligne où la violation a été commise?

Merci pour toute aide

Était-ce utile?

La solution

Je pense que vous voulez ON DUPLICATE KEY IGNORE.

Vous demandez, en cas de collision clé, simplement ré-insérer les mêmes données. Sans surprise cela se traduit par une autre collision clé, car il est toujours une ligne en double!

ON DUPLICATE KEY IGNORE abandonnera l'insert si la ligne existe déjà.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top