mysql 重复键更新

标签 mysql insert unique-key mysql-error-1062

我陷入了使用 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 被违反时,它会简单地更新发生违规的行?

感谢您的帮助

最佳答案

我想你想要ON DUPLICATE KEY IGNORE

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

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

关于mysql 重复键更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2759615/

相关文章:

php - 无法在php中使用mysql查询插入数据

php - 从 Laravel 5 中的一种形式插入不同的表

MySQL INSERT INTO 带外键的表速度很慢

MySQL:ALTER IGNORE TABLE ADD UNIQUE,什么会被截断?

jquery - 唯一元素ID

php - 如何知道是否使用 getimagesize 函数的文件图片

mysql - SQL - 检查唯一列对的条件

mysql - Laravel OrderBy OneToMany 关系

php - 从 sphinx 搜索中选择所有最新的索引数据

php - 仅当记录不存在时如何添加到 MySQL 表?