Я использую MySQL 5.1.56, MyISAM. Моя таблица выглядит так:
CREATE TABLE IF NOT EXISTS `my_table` (
`number` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`money` int(11) NOT NULL,
PRIMARY KEY (`number`,`name`)
) ENGINE=MyISAM;
Он содержит эти две строки:
INSERT INTO `my_table` (`number`, `name`, `money`) VALUES
(1, 'S. Name', 150), (2, 'Another Name', 284);
Теперь я пытаюсь вставить другую строку:
INSERT INTO `my_table` (`number`, `name`, `money`) VALUES
(2, 'S. Name', 240);
И MySQL просто не будет вставлять его, сообщая мне следующее:
#1062 - Duplicate entry '2-S. Name' for key 'PRIMARY'
Я действительно этого не понимаю. Первичный ключ находится в первых двух столбцах (оба они), поэтому строка, которую я пытаюсь вставить, имеет уникальный первичный ключ, не так ли?
Я попытался отремонтировать таблицу, я попытался оптимизировать таблицу, все безрезультатно. Также обратите внимание, что я не могу перейти с MyISAM на InnoDB.
Я что-то упустил или это ошибка MySQL или MyISAM? Спасибо.
Подводя итог и укажите, где я думаю, проблема (хотя ее не должно быть): Таблица имеет первичный ключ в двух столбцах. Я пытаюсь вставить строку с новой комбинацией значений в этих двух столбцах, но значение в столбце один уже находится в некоторой строке, а значение в столбце два уже находится в другой строке. Но они нигде не объединены, поэтому я считаю, что это должно работать, и я очень смущен, увидев, что это не так.