利用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();
});
}
1条答案
按热度按时间mwngjboj1#
您正在尝试添加一个在上有引用的外键
roles
表(->on('roles')
),但在迁移文件中,您正在创建一个名为role
(Schema::create('role', ...
). 你需要匹配这些。将角色表的名称更改为
roles
或者你提到的role
table。