Laravel 迁移:自动递增 id 作为外键 "errno: 150 " 外键约束格式不正确" "



我试图使用指向debiturs表的自动递增id的外键在 Laravel 中迁移:

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');

您的代码看起来不错,可能是您的表中有一些数据没有引用引用的表。

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');
});
}

最新更新