使用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
,我已尝试过这些答案1,2
这是我的用户迁移
的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();
});
}
答案 0 :(得分:1)
您正在尝试添加在roles
表(->on('roles')
)上具有引用的外键,但在迁移文件中,您正在创建名为role
的表({{ 1}})。
你需要匹配那些。
将角色表的名称更改为Schema::create('role', ...
或您对roles
表的引用。