💡
【Laravel】外部キーに関するエラーが出た場合は、型をunsignedBigIntegerにする
こんにちは。
野中やすおです。
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