Просто модификация выше ответа. Просто запустите эту команду, чтобы установить mysql для python
sudo yum install MySQL-python
sudo apt-get install MySQL-python
, помните! Это чувствительно к регистру.
ALTER TABLE `votes` ADD UNIQUE `unique_index`(`user`, `email`, `address`);
Вы попробовали это?
UNIQUE KEY `thekey` (`user`,`email`,`address`)
Многоколоночные уникальные индексы не работают в MySQL, если у вас есть значение NULL в строке, так как MySQL рассматривает NULL как уникальное значение и, по крайней мере, в настоящее время не имеет логики, чтобы обойти это в многоколоночных индексах. Да, такое поведение безумно, потому что оно ограничивает множество законных применений многостолбцовых индексов, но это то, что есть... Пока что это ошибка, которая была помечена как "не будет исправлена" на баг-треке MySQL...
У меня есть таблица MySQL:
CREATE TABLE `content_html` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_box_elements` int(11) DEFAULT NULL,
`id_router` int(11) DEFAULT NULL,
`content` mediumtext COLLATE utf8_czech_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_box_elements` (`id_box_elements`,`id_router`)
);
и UNIQUE KEY работает как и ожидалось, он позволяет несколько NULL строк id_box_elements и id_router.
Я использую MySQL 5.1.42, так что, вероятно, было какое-то обновление проблемы, обсуждаемой выше. К счастью, все работает и, надеюсь, так и останется.