Symfony 4 SQLSTATE [42000] Указанный ключ был слишком длинным - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь создать базу данных из Entity в Symfony 4. Однако результат таков:

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Я знаю, это потому, что он пытается использовать кодировку utf8mb4 и сортировку utf8mb4_unicode_ci.Я попытался заменить файл doctrine.yaml на utf8 и utf8_unicode_ci, а также:

@ORM\Table(name="users", options={"collate"="utf8_unicode_ci", "charset"="utf8", "engine"="MyISAM"})

Но он все еще пытается использовать utf88mb4.Как я могу заставить его использовать utf8?

Ответы [ 3 ]

0 голосов
/ 16 января 2019

Это решение для меня:

Измените 255 на 191 на VARCHAR - вы потеряете любые значения длиннее 191 символа (маловероятно?);

Ссылка

0 голосов
/ 04 мая 2019

Привет, я получаю ту же ошибку: SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1071 Указанный ключ был слишком длинным;максимальная длина ключа составляет 767 байт

Я исправляю это с изменением длина до 191 примерно так: @ ORM \ Column (type = "string", length = 191,уникальный = истина)

0 голосов
/ 09 июня 2018

ОК. Я нашел ответ, поэтому в основном у меня было много файлов миграции, и php постоянно пытался создать базу данных со старой конфигурацией.Чтобы правильно создать его, я удалил каталог Migrations и использовал

php bin/console doctrine:cache:clear-metadata.

Это помогло, теперь создатель использовал новую конфигурацию.

...