[英]Cannot add foreign key constraint - Laravel Migration Error
我有多個遷移,但我認為與這個問題相關的兩個是“工作”和“會話”遷移。
工作遷移
Schema::create('job', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->timestamps();
});
會話遷移:
Schema::create('session', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
$table->unsignedBigInteger('group_id');
$table->unsignedBigInteger('job_id');
$table->boolean('verified')->default(0);
$table->date('date');
$table->time('start_time');
$table->time('end_time');
$table->string('session_type');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users');
$table->foreign('group_id')->references('id')->on('group');
$table->foreign('job_id')->references('id')->on('job');
});
現在我進行遷移時遇到的錯誤是:
SQLSTATE[HY000]:一般錯誤:1215 無法添加外鍵約束(SQL:alter table
session
添加約束session_job_id_foreign
外鍵(job_id
)引用job
(id
))
數據庫:MySQL
我不明白這里有什么問題。 這種方法一直對我有用,即使在當前的 Laravel 項目中也是如此。
您必須確保作業遷移發生在 session 遷移之前
在處理migration
和foreign key relationship
(父子關系)時,根據遷移文件的時間戳定義的順序,因此始終確保在創建Child table
之前創建Parent table
遷移。 這很重要,因為如果父表不存在意味着您在Child table
中引用的列不存在,在這種情況下它將通過此類錯誤。
在您的情況下,更改時間戳將解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.