軽くハマったので把握したことを記事にします

環境

  • Laravel 5.8
  • PHP 7.3
  • DBはMySQL

現象

  • 外部キーを定義したつもりのマイグレーションコードで php artisan migrate したところ
    General error: 1215 Cannot add foreign key constraint というエラーとなってしまい成功しない

    migrate_error.jpg

対策:ポイント(と思っていること)

  • Laravel で php artisan make:migrate したときに自動生成されるマイグレーションコードの ID フィールドの型(?) bigIncrementsunsigned bigInteger
  • この ID フィールドに外部キー制約を設定する場合、型をこれに合わせる必要がある

        Schema::create('XXXXXs', function (Blueprint $table) {
            $table->bigIncrements('id')->comment('XXX_ID');
            //・・・・
            $table->bigInteger('XXX_YYY_id')->unsigned()->comment('YYYYY_ID');
            $table->foreign('XXX_YYY_id')->references('id')->on('YYYYYs');
            //・・・・
            $table->timestamps();
        });

  • エラーにハマる例
    • unsigned() を入れ忘れる
    • bigInteger を integer にしてしまう

解決の手がかりになった情報