Попробовать бесплатно

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