💡

【Laravel】外部キーに関するエラーが出た場合は、型をunsignedBigIntegerにする

2023/05/04に公開

こんにちは。

野中やすおです。

Laravelでマイグレーションを実行したときに以下のような外部キーに関するエラーが出たことがありませんか。エラーを解消するのに結構苦労したので、メモがてら共有します。

出てくるエラー

<span style="font-family: Lato;"><code>Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `users` add constraint `user_id_foreign` foreign key (`user_id`) references `users` (`id`))</code></span>

対処方法

その場合には、外部参照するデータの型をbigIncrementsではなく、unsignedBigIntegerにします。

// 外部参照先のテーブルの作成コード
<span style="font-family: Lato;">Schema::create('users', function (Blueprint $table) { 
    $table->bigIncrements('id'); 
    $table->string('user_name')->comment("ユーザー名")->nullable(); 
}); 

// 外部参照するテーブルの作成コード
Schema::create('items', function (Blueprint $table) { 
    $table->bigIncrements('id'); 
  $table->unsignedBigInteger('user_id')->comment("ユーザーID")->nullable(); 
    $table->foreign('user_id')->references('id')->on('users'); 
}); 

// マイグレーション成功
</span>

Discussion