#mysql
#mysql
Вопрос:
Один из моих talbe имеет многоколоночный индекс с общим количеством 1011 символов. механизм хранения — InnoDB.
Та же таблица отлично работала в mysql 5.6.26. но теперь, когда я обновился до mysql 5.7.16, я получаю сообщение об ошибке Указанный ключ был слишком длинным; максимальная длина ключа составляет 3072 байта.
Я знаю, что существует ограничение на общий размер индекса. но вопрос в том, почему он работал в 5.6 и перестал работать в 5.7. Могу ли я что-нибудь сделать, не уменьшая размер столбцов.
Комментарии:
1. dba.stackexchange.com/questions/49913/…
2. хорошо, но почему то же самое работает в 5.6 — мы используем 5.6 уже два года без каких-либо ошибок
Ответ №1:
Проблемой для нас был набор символов по умолчанию. В старой версии 5.6 моим набором символов по умолчанию был latin1, но когда я установил 5.7.16, я не менял набор символов, и по умолчанию был utf8, что привело к увеличению размера столбца, поскольку utf занимает больше байтов, что приводит к ошибке. изменение набора символов по умолчанию на latin1 и воссоздание таблицы устранили проблему.
[mysqld]
character-set-server=latin1
[client]
default-character-set=latin1
[mysql]
default-character-set=latin1
Комментарии:
1. Если это окончательное решение вашей проблемы, вы должны принять свой собственный ответ как правильный.