我试图在Laravel中使用指向id
表的自动递增debiturs
的外键进行迁移:
public function up()
{
Schema::create('debitur', function (Blueprint $table) {
$table->increments('id');
$table->string('nama');
$table->string('email')->unique();
$table->timestamps();
});
}
但是当我尝试在下面添加一个外键时,它会抛出一个" 150外键约束错误形成"错误。
public function up()
{
Schema::create('tempat_tinggal', function (Blueprint $table) {
$table->increments('id');
$table->integer('id_debitur')->unsigned();
});
Schema::table('tempat_tinggal', function ($table) {
$table
->foreign('id_debitur')
->references('id')
->on('debiturs')
->onDelete('cascade')
->onUpdate('cascade');
});
}
我已经尝试删除数据库并从头开始,但它仍然会抛出相同的错误。我一定错过了什么......
编辑:出于某种原因,Laravel不会自动附加' s'到了'debitur'在创建表时。$table
->foreign('id_debitur')
->references('id')
->on('debitur') <-------
->onDelete('cascade')
->onUpdate('cascade');
答案 0 :(得分:0)
您的代码看起来很好,可能是您的表中有一些数据没有提供给参考表。
public function up()
{
Schema::create('tempat_tinggal', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('id_debitur');
});
Schema::table('tempat_tinggal', function ($table) {
$table
->foreign('id_debitur')
->references('id')
->on('debiturs')
->onDelete('cascade')
->onUpdate('cascade');
});
}