Исправление указанного ключа было слишком длинным исключением ошибки в Laravel 5.4

Начиная с Laravel 5.4, в наборе символов по умолчанию для базы данных произошли небольшие изменения. Теперь используется кодировка по умолчанию utf8mb4, которая включает поддержку Emojis. Эта проблема затрагивает эксклюзивные новые приложения, и пока вы работаете с MySQL> = v5.7.7, вам не нужно ничего делать. Эта ошибка обычно появляется в MariaDB или более старых версиях MySQL, вызванных специально во время миграции:

[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))
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Исправление этой ошибки зависит не от самого инструмента (MariaDB), а от вашего кода. Чтобы предотвратить это исключение, как указано на официальный путеводитель по миграции Laravel, вам нужно только указать длину строк по умолчанию в вашем AppServiceProvider, просто импортировав класс Schema и запустив статический метод defaultStringLength из класса на boot функция:

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

Например, в проектах по умолчанию вы найдете этот файл в /yourapp/app/Providers/AppServiceProvider.php и после изменений файл должен выглядеть примерно так:

Если вы запустите миграцию еще раз, исключение больше не должно появляться.

Ссылка на основную публикацию
Adblock
detector