【发布时间】:2018-03-06 08:46:41
【问题描述】:
我正在尝试使用外键创建一个数据透视表,这是我在 Laravel 中所做的迁移:
public function up()
{
Schema::create('player_position', function (Blueprint $table) {
$table->integer('player_id')->unsigned()->index();
$table->integer('position_id')->unsigned()->index();
$table->foreign('player_id')->references('id')->on('players')->onDelete('cascade');
$table->foreign('position_id')->references('id')->on('positions')->onDelete('cascade');
});
}
但是,我得到一个错误:
[照亮\数据库\查询异常]
SQLSTATE[HY000]:一般错误:1215 无法添加外键约束 (SQL:alter tableplayer_position添加约束player_position_posi tion_id_foreign外键 (position_id) 在删除级联时引用positions(id)[PDOException]SQLSTATE[HY000]: 一般错误:1215 无法添加外键约束
我读过通常外键约束错误是关于没有为字段分配无符号,或者数据库中已经有记录,但是我的数据库是空的,我的字段有无符号,所以不知道是什么问题?
【问题讨论】:
-
我建议你不要在你的数据库上使用约束。相反,请尝试在您的代码中对其进行管理。
-
@MortezaRajabi 为什么会这样?
-
管理这样一个带有约束的表很难,每次你想添加或删除一些东西时都会遇到这些错误。
-
这不是一个好习惯。
标签: mysql database laravel laravel-migrations