(Laravel) マイグレーション時、SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint のエラー

laravel-migration-foreign-key-constraint

 

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();
        });
    }

 

そしたら無事マイグレーション できた。

他にもよくありがちなのが、integerとBigIntegerの違いだったりするようだ。

 

後はid()と、autoincrement(‘id’)の違いも確かめてないけどダメだったりするのかな?

 

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。