获取错误:SQLSTATE [HY000]:常规错误:1215无法在Laravel 5中添加外键约束

时间:2016-01-20 16:04:47

标签: laravel-5 eloquent

我有这四张桌子但是我在Laravel雄辩中得到了上述错误。谁能说出我在这里失踪了什么?但是当我删除外来方法时,迁移工作正常。

mu

我包含了unsigned方法,但仍然遇到上述错误。

  Schema::create('students', function (Blueprint $table) {
        $table->increments('id')->unsigned();
        $table->string('first_name');
        $table->string('last_name');
        $table->string('middle_name');
        $table->date('birthdate');
        $table->integer('degree_id')->unsigned();
        $table->index(['id','first_name', 'last_name']);
        $table->timestamps();

        $table->foreign('degree_id')
              ->references('id')
              ->on('degrees');


    });

这是另外两张桌子。

   Schema::create('degrees', function (Blueprint $table) {
        $table->increments('id')->unsigned();
        $table->string('description');
        $table->string('category_id');
        $table->integer('duration');
        $table->string('sub_code');
        $table->timestamps();

        $table->foreign('sub_code')
              ->references('id')
              ->on('courses');
    });

最后一张桌子:

        Schema::create('instructors', function (Blueprint $table) {
        $table->increments('id')->unsigned();
        $table->string('first_name');
        $table->string('middle_name');
        $table->string('last_name');
        $table->date('birthdate');
        $table->index(['id', 'first_name', 'last_name']);
        $table->timestamps();
    });

1 个答案:

答案 0 :(得分:1)

迁移文件的顺序很重要。如果您在students表之前首先创建degrees表,则外键约束将失败,因为尚未创建degrees表。

要解决此问题,您可以将所有外键约束移动到应该最后运行的迁移create_foreign_key_constraints_migration