mysql 5.7 - Указанный ключ слишком длинный; максимальная длина ключа - 3072 байта

Один из моих talbe имеет многоколоночный индекс с общим количеством 1011 символов. двигатель хранения - InnoDB.

Та же таблица отлично работала в mysql 5.6.26. но теперь, когда я обновился до mysql 5.7.16, я получаю ошибку. Указанный ключ был слишком длинным; Максимальная длина ключа - 3072 байта .

Я знаю, что существует ограниченность по общему индексу. но вопрос в том, почему он работал в 5.6 и перестал работать в 5.7. Есть ли что-то, что я могу сделать, не уменьшая размер столбцов.

mysql,

0

Ответов: 1


0 принят

Проблема для нас была набором символов по умолчанию. В старой версии 5.6 мой набор символов по умолчанию был latin1, но когда я установил 5.7.16, я не изменил набор символов, а по умолчанию был utf8, что привело к большему размеру столбца, поскольку utf занимает больше байтов, что приводит к ошибке. изменение набора символов по умолчанию на latin1 и воссоздающая таблица исправили проблему.

[mysqld]
character-set-server=latin1

[client]
default-character-set=latin1

[mysql]
default-character-set=latin1
MySQL,
Похожие вопросы