我试图使用指向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');
});
}