我一直在尝试基于其他堆栈问题和答案的所有可能的解决方案,但我仍然没有取得任何成功,所以我不得不提出自己的问题。
我有以下架构
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删除级联)
是因为列是" null"让它失败?我尝试了它没有它是空的仍然失败。可能导致此问题的其他原因是什么?