簡體   English   中英

無法添加外鍵約束 - Laravel 遷移錯誤

[英]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 )引用jobid ))

數據庫:MySQL

我不明白這里有什么問題。 這種方法一直對我有用,即使在當前的 Laravel 項目中也是如此。

您必須確保作業遷移發生在 session 遷移之前

在處理migrationforeign key relationship (父子關系)時,根據遷移文件的時間戳定義的順序,因此始終確保在創建Child table之前創建Parent table遷移。 這很重要,因為如果父表不存在意味着您在Child table中引用的列不存在,在這種情況下它將通過此類錯誤。

在您的情況下,更改時間戳將解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM