Сделать текстовый столбец уникальным ключом
Я хочу сделать таблицу в MySQL
сервере с столбцом mediumtext
как UNIQUE KEY
CREATE TABLE `parts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` mediumtext NOT NULL,
`display_status` int(11) NOT NULL,
UNIQUE KEY `name` (`name`),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
но это сделало ошибку
BLOB/TEXT column 'name' used in key specification without a key length
когда я изменяю тип `name` на varchar.. он работает!
можете ли вы указать, могу ли я сделать текстовый столбец как UNIQUE KEY
спасибо:)
Ответы
Ответ 1
В принципе вы не можете использовать столбец Text
как UNIQUE
. Потому что практически такой большой столбец не будет уникальным, и может появиться больше дубликатов. Поэтому перейдите к методу hashing
и используйте этот вывод как ограничение UNIQUE.
Надеюсь, это поможет вам
Ответ 2
Предел 255 для длины varchar больше не применяется. Из документации:
Значения в столбцах VARCHAR представляют собой строки переменной длины. Длина может быть указана как значение от 0 до 255 до MySQL 5.0.3 и от 0 до 65535 в версиях 5.0.3 и более поздних версий.
Уникальные индексы должны иметь известную максимальную длину (требование mysql из-за ее внутренней реализации), поэтому используйте varchar с достаточно большим значением, чтобы соответствовать вашему самому длинному ожидаемому значению, например
...
`name` varchar(65535) NOT NULL, -- for example
...