質問

重複したキーアップデートで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