Help us understand the problem. What is going on with this article?

(Laravel)外部キーを設定するにはデータ型を揃える。

環境

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でテーブルをすべて作り直し解決。

fujioka8700
フロントエンジニアへ転職するため、活動中。 あと、お笑い好きです(*^-^)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away