|

Laravel 5.4: Specified key was too long error


AliExpress WW


Laravel 5.4 внес изменения в набор символов базы данных по умолчанию, и теперь utf8mb4он включает поддержку хранения смайликов. Это влияет только на новые приложения, и пока вы используете MySQL v5.7.7 и выше, вам ничего не нужно делать.

Для тех, кто работает с MariaDB или более старыми версиями MySQL, вы можете столкнуться с этой ошибкой при попытке запустить миграции:

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Синтаксическая ошибка или нарушение доступа: 1071 Указанный ключ был слишком длинным; максимальная длина ключа составляет 767 байт (SQL: alter table usersadd unique users_email_unique(email))

[PDOException]
SQLSTATE[42000]: Синтаксическая ошибка или нарушение доступа: 1071 Указанный ключ был слишком длинным; максимальная длина ключа составляет 767 байт
Как указано в руководстве по миграции, чтобы исправить это, все, что вам нужно сделать, это отредактировать AppServiceProvider.phpфайл и внутри bootметода установить длину строки по умолчанию:


1use Illuminate\Support\Facades\Schema;

2

3public function boot()

4{

5 Schema::defaultStringLength(191);

6}

После этого все должно работать в обычном режиме. Если вам понравился этот пост, обязательно присоединяйтесь к еженедельной рассылке Laravel и никогда не пропустите новые выпуски, советы по фреймворкам и новые учебные пособия.

22:34
[addon]1043[/addon]
Реклама
|
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.