Указанный ключ был слишком длинным для уникальных ключей: миграции laravel - PullRequest
0 голосов
/ 17 сентября 2018

Я программирую проект на Laravel 5.6, и у меня есть небольшая проблема с миграциями

при запуске php artisan migrate:fresh я получаю сообщение об ошибке:

Migrating: 2014_10_12_000000_create_users_table

   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` ad
d unique `users_username_unique`(`username`))

коды:

// 2014_10_12_000000_create_users_table.php
    if (!Schema::hasTable('users')) {
                Schema::create('users', function (Blueprint $table) {
                    $table->increments('id')->unsigned();
                    $table->string('name');
                    $table->string('username')->unique();
                    $table->string('email')->unique();
                    $table->timestamp('email_verified_at')->nullable();
                    $table->string('password');
                    $table->rememberToken();
                    $table->timestamps();
                });
            }

Используемые технологии: laravel 5.6 , композитор 1.8

1 Ответ

0 голосов
/ 17 сентября 2018

Как следует из сообщения об ошибке, уникальный ключ слишком длинный для БД.

Вы можете назвать свои уникальные индексы в миграциях Laravel следующим образом:

Schema::create('users', function (Blueprint $table) {
    $table->increments('id')->unsigned();
    $table->string('name');
    $table->string('username');
    $table->string('email');
    $table->timestamp('email_verified_at')->nullable();
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
    $table->unique('username', 'username');
    $table->unique('email', 'email');
});

Таким образом, ваш уникальный ключИндекс для username будет именоваться username вместо users_username_unique и, следовательно, не будет превышать ограничение в байтах для имени индекса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...