ERROR 1071 (42000) at line 8: Specified key was too long; max key length is 767 bytes
Признаки
При импорте в MySQL, когда вы создаете ключ для таблицы InnoDB, возникает следующая ошибка: "ERROR 1071 (42000) at line 8: Specified key was too long; max key length is 767 bytes".
CREATE TABLE department
(
id INT,
name VARCHAR(1000)
);
ALTER TABLE department
ADD PRIMARY KEY (id, name);
ERROR 1071 (42000) at line 8: Specified key was too long; max key length is 767 bytes
Причины
Максимальная длина ключа для базы данных MySQL для InnoDB Engine составляет 767 байт. Длина ключа включает в себя сумму длин всех столбцов, входящих в ключ.
Решения
Существует несколько решений этой проблемы:
- Изменить размер некоторых столбцов. Например, если для хранения фамилий используется VARCHAR(300), можно уменьшить его размер до 100 с минимальным риском потери данных.
- Указать частичную длину столбца для символьных столбцов в ключе. Например, для столбца VARCHAR(1000) можно указать только 100 символов, которые будут использоваться в ключе. В примере в первичном ключе участвуют только 100 байт столбца NAME.
ALTER TABLE department
ADD PRIMARY KEY (id, name(100));
- Использовать другой набор столбцов для ключа.
Если у вас есть какие-либо другие вопросы, пожалуйста, свяжитесь с нами: support@convertum.ru