Миграция Laravel не может добавить внешний ключ в таблицу пользователей - PullRequest
0 голосов
/ 22 июня 2019

Я хочу добавить внешний ключ в таблицу пользователей. Все вроде нормально, но я получаю следующую ошибку.

SQLSTATE [HY000]: общая ошибка: 1005 Не удается создать таблицу electro_service. #sql-17d0_20 (номер ошибки: 150 "ограничение внешнего ключа неправильно сформирован ") (SQL: изменить таблицу users добавить ограничение users_role_id_foreign ссылки на внешние ключи (role_id) roles (id) при удалении каскада).

Пользователи

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->unsignedBigInteger('role_id');
        $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
        $table->string('name');
        $table->string('mobile');
        $table->string('code');
        $table->string('email')->unique();
        $table->tinyInteger('email_verified')->default(0);
        $table->string('email_verification_token', 128)->nullable();
        $table->string('image')->default('default.png');
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

Роли

public function up()
{
    Schema::create('roles', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->tinyInteger('role')->default(0);
        $table->string('slug')->unique();
        $table->timestamps();
    });
}

Скажите, пожалуйста, как я могу это исправить и где понадобятся изменения.

1 Ответ

1 голос
/ 24 июня 2019

Переименовать дату файла миграции пользователя больше, чем роли

пример:

2019_06_06_135936_create_roles_table
2019_06_06_135937_create_users_table

Теперь таблица ролей будет создана до миграции пользователей

...