# 1071 - Указанный ключ был слишком длинным; максимальная длина ключа 767 байт - PullRequest
470 голосов
/ 29 ноября 2009

Когда я выполнил следующую команду:

ALTER TABLE `mytable` ADD UNIQUE (
`column1` ,
`column2`
);

Я получил это сообщение об ошибке:

#1071 - Specified key was too long; max key length is 767 bytes

Информация о столбце 1 и столбце 2:

column1 varchar(20) utf8_general_ci
column2  varchar(500) utf8_general_ci

Я думаю, varchar(20) требуется всего 21 байт, а varchar(500) - только 501 байт. Таким образом, общее количество байтов составляет 522, а не 767. Так почему я получил сообщение об ошибке?

#1071 - Specified key was too long; max key length is 767 bytes

Ответы [ 32 ]

0 голосов
/ 12 апреля 2019

Чтобы исправить это, это работает для меня как шарм.

ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;
0 голосов
/ 04 апреля 2018

В случае, если вы запускаете Laravel (теперь laravel по умолчанию использует Unicode с 4 байтами, который вызывает это), вы можете решить эту проблему, изменив следующие строки в config / database.php из

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',

 до

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
...