Laravel迁移无法在用户表中添加外键

时间:2019-06-22 15:13:53

标签: laravel laravel-5.8 laravel-migrations

我想在用户表中添加一个外键。一切似乎都还好,但是我得到了以下错误。

  

SQLSTATE [HY000]:常规错误:1005无法创建表   electro_service#sql-17d0_20(错误编号:150“外键约束   格式不正确”)(SQL:alter table 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 个答案:

答案 0 :(得分:1)

将用户迁移文件的日期重命名为比角色更大的日期

示例:

2019_06_06_135936_create_roles_table
2019_06_06_135937_create_users_table

现在,角色表将在用户迁移之前创建