Подтвердить что ты не робот

Сделать текстовый столбец уникальным ключом

Я хочу сделать таблицу в 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

спасибо:)

4b9b3361

Ответ 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 
...