Вопрос

Я застрял на запросе 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