2013-09-03 4 views
2

У меня есть таблица вроде этого:Обновление MySQL: Дублированный уникальный ключ # 1062

CREATE TABLE IF NOT EXISTS `activity` (
    `ID` int(8) NOT NULL AUTO_INCREMENT, 
    `action` tinyint(1) NOT NULL, 
    `userID` int(8) NOT NULL, 
    `categoryID` int(8) NOT NULL, 
    PRIMARY KEY (`ID`), 
    UNIQUE KEY `UNIQUE` (`userID`,`categoryID`), 
    KEY `categoryID` (`categoryID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ; 

С следующей информацией:

INSERT INTO `activity` (`ID`, `action`, `userID`, `categoryID`) VALUES 
(1, 2, 11, 312); 

Я пытаюсь выполнить этот запрос:

UPDATE `activity` SET `action` = '3' WHERE `userID` = '11' AND `categoryID` = '312' ; 

И ответьте мне на это:

Duplicate entry '11-312' for key 'UNIQUE' 

Я не знаю почему. Я не изменяю уникальные ключи или не вставляю новую запись. В чем проблема?

Спасибо.

+0

Я попытался воспроизвести, но обновление работает для меня. Какой клиент вы используете? – t777

+0

У вас есть триггер на вашем столе? – Mihai

ответ

0

Я не знаю, почему, когда я экспортировать всю базу данных, а не шоу, прежде чем SQL, показать это:

CREATE TABLE IF NOT EXISTS `activity` (
    `ID` int(8) NOT NULL AUTO_INCREMENT, 
    `action` tinyint(1) NOT NULL, 
    `userID` int(8) NOT NULL, 
    `categoryID` int(8) NOT NULL, 
    PRIMARY KEY (`ID`), 
    UNIQUE KEY `UNIQUE` (`action`,`userID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ; 

Теперь я переписать настройки таблицы SQL, и она работает.

Смежные вопросы