我使用重复密钥更新上的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上的唯一键被违反时,它将仅更新发生违规行为的行?

谢谢你的帮助

有帮助吗?

解决方案

我想你想要 ON DUPLICATE KEY IGNORE.

如果键相撞,您要要求简单地重新插入相同的数据。毫不奇怪,这导致了另一个关键碰撞,因为它仍然是重复的行!

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top