2016-07-11 4 views
0

Мне нужно сохранить уникальный индекс в столбце varchar(500) таблицы моей базы данных Mysql 5.7.13.Mysql 5.7.13 innodb unique column varchar (500)

Кодировка установлена ​​в UTF8, поэтому, насколько мне известно, предел в символах равен 255, поскольку я использую движок innodb. Я знаю также, что существует опция innodb_large_prefix, которая должна расширять размер до 3072 байт. Я попытался настроить свой db для поддержки этой функции, но это не сработает. Я попытался вставить две одинаковые строки длиной в 500 символов с последним символом, но я получаю уникальную ошибку ограничения, поскольку, как я полагаю, проверка уникальности выполняется по первым 255 символам.

Я что-то упустил? Не поняла ли я цель этого варианта?

P.S Я включил innodb_file_format = Barracuda, как указано в документации mysql.

Спасибо за помощь. Simone

+0

Каков формат вашей таблицы в таблице? Он говорит, что в документе это только для динамических или сжатых форматов строк, поэтому может быть и так. – rlanvin

+0

@rlanvin Я изменил формат строки на «DYNAMIC» первым и «COMPACT», но результат тот же. Уникальное ограничение вычисляется по первым 255 символам. –

ответ

0

Я решил свою проблему.

Оказалось, что двигатель innodb был настроен нормально. Проблема в том, что я создал таблицу перед включением опции innodb_large_prefix, установив уникальный индекс на varchar(500).

После удаления и воссоздания индекса в поле varchar(500), уникальное ограничение начинает работать должным образом.