General error: 1215 Cannot add foreign key constraint on tables

General error: 1215 Cannot add foreign key constraint on tables

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

我有以下架构

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 我得到以下错误

[Illuminate\Database\QueryException] SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table claims add constraint claims_file_id_ foreign foreign key (file_id) references file_data (id) on delete cascade)


是不是因为列是"null"所以失败了?我试过了,但它没有为空,但仍然失败了。还有哪些其他原因可能导致它出现此问题?

原来我需要对列进行索引