2

ON DUPLICATEKEYUPDATEを使用して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のUNIQUEKEYが違反された場合、違反が発生した行を更新するだけだと思いましたか?

助けてくれてありがとう

4

1 に答える 1

3

欲しいと思いますON DUPLICATE KEY IGNORE

キーの衝突が発生した場合に、同じデータを単純に再挿入するよう求めています。当然のことながら、これはまだ重複行であるため、別のキー衝突が発生します!

ON DUPLICATE KEY IGNORE行がすでに存在する場合、挿入を中止します。

于 2010-05-03T16:43:21.067 に答える