常规错误:1215无法在表上添加外键约束

时间:2017-05-03 23:02:08

标签: php mysql laravel-5 artisan-migrate

我一直在尝试基于其他堆栈问题和答案的所有可能的解决方案,但我仍然没有取得任何成功,所以我不得不提出自己的问题。

我有以下架构

Schema::create('file_data', function (Blueprint $table) {
            $table->engine = 'InnoDB';
            $table->increments('id');

...

        Schema::create('claims', function (Blueprint $table) {
            $table->engine = 'InnoDB';
         ....
            $table->integer('file_id')->unsigned()->nullable()->default(DB::raw('NULL'));

          ....
            $table->foreign('budget_id')
                ->references('id')
                ->on('budgets')
                ->onDelete('cascade');

        });

        Schema::create('claims_details', function (Blueprint $table) {
            $table->engine = 'InnoDB';
           .........
            $table->integer('file_id')->unsigned()->nullable()->default(DB::raw('NULL'));
          ..........

        });

在另一个档案中

Schema::table('claims', function(Blueprint $table){
        $table->foreign('file_id')
            ->references('id')
            ->on('file_data')
            ->onDelete('cascade');
      });

      Schema::table('claims_details', function(Blueprint $table){
        $table->index(['invoice_date','claim_id']);
        $table->foreign('claim_id')
            ->references('id')
            ->on('claims')
            ->onDelete('cascade');
            $table->foreign('file_id')
                ->references('id')
                ->on('file_data');
      });

当我运行命令php artisan migrate时,我收到以下错误

  

[照亮\数据库\ QueryException]     SQLSTATE [HY000]:常规错误:1215无法添加外键约束(SQL:alter table claims添加约束claims_file_id_ foreign外键(file_id)引用file_data({{1删除级联)

  • 表格是Innob
  • 列属于同一类型
  • 列未签名
  • 文件以正确的顺序运行
  • 唯一的区别是file_id必须为null(它们必须是)

是因为列是" null"让它失败?我尝试了它没有它是空的仍然失败。可能导致此问题的其他原因是什么?

0 个答案:

没有答案