Laravel Migration:自动增加id作为外键" errno:150"外键约束形成错误""

时间:2018-06-19 07:38:22

标签: laravel foreign-keys database-migration

我试图在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');

1 个答案:

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