MySQL ключ был слишком длинным вопросом - PullRequest
1 голос
/ 09 ноября 2010

я пытался импортировать свою резервную копию после того, как я изменил кодировку на utf8 с latin1, теперь во время импорта я получил эту ошибку ОШИБКА 1071 (42000) в строке 2137: указанный ключ слишком длинный; максимальная длина ключа 1000 байтов попробуйте изменить my.cnf и установить все кодировки и соединения в utf8, но теперь удача, я не хочу возвращаться в latin1, и я знаю, что это решит проблему, но utf8 моя тюрьма, какая-либо подсказка? я знаю латинский 1 байт = 1 символ и utf8 3 байт = 1 ..

Ответы [ 3 ]

3 голосов
/ 10 ноября 2010

Хотя UTF-8 не всегда составляет 3 байта для каждого символа, MySQL резервирует 3 байта на символ для индексов.

Если ваше приложение допускает это (то есть оно не используется в ограничении UNIQUE KEY),переопределите / измените таблицу, чтобы использовать префиксный ключ соответствующей длины (т. е. <1000/3). </p>

CREATE TABLE my_table .... KEY my_field_20 (my_field (20));

0 голосов
/ 09 ноября 2010

Можете ли вы переключиться с MyISAM на InnoDB, похоже, это решает проблему ..

0 голосов
/ 09 ноября 2010

Используйте параметр --force в вашей команде mysqldump, он проигнорирует ошибку и продолжит резервное копирование.

...