【Laravel】外部キー制約の部分でうまくいかない場合にやること
Laravelでphp artisan migrate
を行なっても、以下のようなエラーが出るので、困ったのでメモ。
[Illuminate\Database\QueryException] SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `hogehoge` add constraint `hogehoge_fuga_id_fo reign` foreign key (`fuga_id`) references `fuga` (`id`)) [PDOException] SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
migrationの記録をきれいにする
migrationの記録を一度全部きれいにしたらうまく動いた。綺麗にする方法は、以下の2つのやり方がある。
- artisanコマンドできれいにする
ロールバックの操作なので、厳密な意味合いは異なるが、以下で一掃する。
php artisan migrate:refresh
- DBに自動的に生成される
migrations
テーブルを削除
php artisan migrate:refresh
でもうまくいかないことがあったため、強行的な方法であるがこの方法を行ってみると良い。また、マイグレーションの記録がartisanコマンドによって本当にきれいになったか不安になることが多かったので、このエラーが起きたらテーブルごと削除するのが一番安心できた。
drop table migrations;