2

我被困在使用 ON DUPLICATE KEY UPDATE 的 mySQL 查询上。

我收到错误:

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

该表如下所示:

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;  

正在中断的查询是这样的:

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

我在应用程序的其他地方使用了一个非常相似的查询,没有任何问题。我不知道为什么这个会坏。我希望当 fname 上的 UNIQUE KEY 被违反时,它会简单地更新发生违反的行?

谢谢你的帮助

4

1 回答 1

3

我想你想要ON DUPLICATE KEY IGNORE

您要求在发生密钥冲突时简单地重新插入相同的数据。不出所料,这会导致另一个键冲突,因为它仍然是重复的行!

ON DUPLICATE KEY IGNORE如果该行已经存在,将中止插入。

于 2010-05-03T16:43:21.067 回答