Laravel 5.3 - 外键约束形成错误

时间:2018-06-09 21:21:31

标签: php mysql laravel eloquent laravel-5.3

使用Laravel 5.3和Eloquent模型,尝试创建用户角色模型。 我有两个表用户角色的主模式,每个用户都有一个角色,每个角色都有很多用户(一对多关系)。

当我试图在用户表中创建一个引用角色表中的ID的外键时,它会给我这个错误

  

在Connection.php第647行:

     

SQLSTATE [HY000]:常规错误:1005无法创建表格   mydata。#sql-7e0_71(错误号:150"外键约束不正确   形成")(SQL:alter table" user"添加约束   " user_role_id_foreign"外键(" role_id")引用角色(" id"))

     

在Connection.php第449行:

     

SQLSTATE [HY000]:常规错误:1005无法创建表格   mydata。#sql-7e0_71(错误号:150"外键约束是   形成错误")

注意:我正在使用工匠命令migrate,我已尝试过这些答案12

这是我的用户迁移

up()功能
public function up()
    {
        Schema::create('user', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->integer('role_id')->unsigned();
            $table->string('remember_token')->nullable();
            $table->timestamps();

            $table->foreign('role_id')->references('id')->on('role');
        });
    }

角色

public function up()
{
    Schema::create('role', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('description');
        $table->timestamps();
    });
}

1 个答案:

答案 0 :(得分:1)

您正在尝试添加在roles表(->on('roles'))上具有引用的外键,但在迁移文件中,您正在创建名为role的表({{ 1}})。  你需要匹配那些。

将角色表的名称更改为Schema::create('role', ...或您对roles表的引用。