Specified key was too long; max key length is 767 bytes

02 February 2018
#Laravel

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

Я как счастливый обладатель Марии так же попал под удар апдейтов =)

Проблема

У всех тех счастливчиков может появиться ошибка аналогичная этой:

    [Illuminate\Database\QueryException]                                         
    
    SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))

Решение

Для исправления данной ошибки, всё, что вам нужно, это установить максимальную длину строки в файле app/Providers/AppServiceProvider.php

    use Illuminate\Support\Facades\Schema;
    
    public function boot()
    {
        Schema::defaultStringLength(191);
    }