環境
Windows10
Laravel 8.27.0
XAMPP 8.0.1
問題
Laravelでテーブルを作成し、外部キーを設定しようとしているのにエラーが発生する。
("SQLSTATE[HY000]: General error: 1005 Can't create table `todo`.`folders` (errno: 150 "Foreign key constraint is
incorrectly formed")
原因
データ型が適切でないことだった。
外部キーを設定する側 \$table->integer('user_id')->unsigned(); //INT(符号なし)
外部キーの対象側 \$table->id(); //BIGINT(符号なし)
解決策
外部キーを設定する側 \$table->bigInteger('user_id')->unsigned(); //BIGINT(符号なし)
外部キーの対象側 \$table->id(); //BIGINT(符号なし)
参照先$table->id()
のとき、参照先カラムのデータ型が符号なしのBIGINTだったため、外部キーを設定するカラムも符号なしのBIGINT(符号なし)型$table-bigIngeger('user_id')->unsigned()
で指定する必要がある。
データ型を適切に指定し、php artisan migrate:refresh
でテーブルをすべて作り直し解決。