mysql ON DUPLICATE KEY UPDATE - PullRequest
       27

mysql ON DUPLICATE KEY UPDATE

2 голосов
/ 03 мая 2010

Я застрял в запросе MySQL, используя ON DUPLICATE KEY 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/' 

Я использую очень похожий запрос в другом месте приложения без проблем. Я не уверен, почему этот ломается. Я ожидал, что когда UNIQUE KEY на fname будет нарушен, он просто обновит строку, где произошло нарушение?

Спасибо за любую помощь

1 Ответ

3 голосов
/ 03 мая 2010

Я думаю, что вы хотите ON DUPLICATE KEY IGNORE.

Вы просите, в случае столкновения клавиш, просто заново вставить те же данные. Неудивительно, что это приводит к другому столкновению клавиш, поскольку это все еще повторяющаяся строка!

ON DUPLICATE KEY IGNORE прервет вставку, если строка уже существует.

...