【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;