laravel5.3-外键约束的格式不正确

isr3a4wc  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(283)

利用laravel5.3和雄辩模型,试图做出一个用户角色模型。我的主模式有两个表用户和角色,每个用户有一个角色,每个角色有多个用户(一对多关系)。
当我试图在用户表中创建一个引用角色表中的id的外键时,它会给我这个错误
在connection.php第647行:
sqlstate[hy000]:常规错误:1005无法创建表mydata。#sql-7e0_(errno:150“外键约束格式不正确”)(sql:alter table“user”add constraint“user\u role\u id\u foreign”外键(“role\u id”)引用角色(“id”))
在connection.php第449行:
sqlstate[hy000]:常规错误:1005无法创建表mydata。#sql-7e0_71(errno:150“外键约束格式不正确”)
注意:我使用的是artisan命令 migrate ,我试过这些答案
这是我的 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();
    });
}
mwngjboj

mwngjboj1#

您正在尝试添加一个在上有引用的外键 roles 表( ->on('roles') ),但在迁移文件中,您正在创建一个名为 role ( Schema::create('role', ... ). 你需要匹配这些。
将角色表的名称更改为 roles 或者你提到的 role table。

相关问题