laravelで、
マイグレーションしたら下記のようなエラー
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
今回エラーになったのは、
カラム’user_id’に、親テーブルの’id’をキーとする外部制約を付与しようとしたケース
原因:親子でカラムの型が一致していなかったから
色々調べてみるとよくあるエラーの原因として、
外部制約を与えようとするカラムのデータ型が、親となるカラムのデータ型と異なるから、
と言うのが多くあるらしい。
今回は、
use_idのカラムが、親テーブルのカラムidが下記点で違っていた。
■カラム’use_id’の属性にunsigendがついていない
親カラム’id’には属性に「UNSIGNED」がついているのに、’use_id’につけ忘れていた。

解決策:親とデータ型を揃える
なのでmigrationファイルで以下のように下記加えた
public function up()
{
Schema::create('articles', function (Blueprint $table) {
//==========省略==========
$table->bigInteger('user_id')->unsigned(); #unsigned()まで一緒にしないとだめ!
//==========省略==========
$table->timestamps();
});
}
上記の様に、
「->unsigned()」と言う記述を記述することで、親とデータ型を揃える。
そしたら無事マイグレーション できた。
他にもよくありがちなのが、integerとBigIntegerの違いだったりするようだ。
後はid()と、autoincrement(‘id’)の違いも確かめてないけどダメだったりするのかな?
https://readouble.com/laravel/8.x/ja/migrations.html
Laravel 関連記事
コメントを残す