Я застрял в mySQL-запросе, используя ON DUPLICATE KEY UPDATE.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 будет нарушен, он просто обновит строку, в которой произошло нарушение?
Спасибо за любую помощь
Почему вы используете SET с командой INSERT ??? – animuson
@animuson Что в этом плохого? Любые поля, не указанные, будут установлены в их значения по умолчанию, или NULL (если разрешено). – rjh
@rjh: Что не так с использованием '(picid, fname, path) VALUES (732, 'hr2461809-3', 'pictures /')'? Такие вещи делают языки такими беспорядками, почему все не могут просто придерживаться ВСТАВКИ? – animuson