我卡在使用對重複密鑰更新MySQL查詢。MySQL在重複鍵UPDATE
,我發現了錯誤:
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被違反時,它會簡單地更新發生違規行的行嗎?
感謝所有幫助
你爲什麼要使用SET與INSERT命令??? – animuson 2010-05-03 16:44:43
@animuson那有什麼問題?任何未指定的字段將被設置爲其默認值,或者NULL(如果允許)。 – rjh 2010-05-03 16:46:25
@rjh:這有什麼錯用'(picid,FNAME,路徑)VALUES(732, 'hr2461809-3', '圖片/')'?像這樣的事情使得語言如此混亂,爲什麼不能每個人都堅持使用INSERT VALUES? – animuson 2010-05-03 16:49:59