マイグレーションファイルを消した
$ php artisan make:migration create_users_table --create=users
的な感じで、あるテーブルのマイグレーションファイルを作り(実際のテーブル名は違いますが)、Atomで編集後、
$ php artisan migrate
しました。しかし、テーブル名が間違っていることに気づいたので、正しいテーブル名のマイグレーションファイルを再度作成しました。間違ってる方はどうしようかなーと0.2秒くらい考え、ファイルを消しました。
何が起きたか
mysqlに変な名前のテーブル入っちゃったから消さないとなと思い、公式ドキュメントのマイグレーションのページを見たところ、
$ php artisan migrate:refresh
なるコマンドがデータベース全体を作り直すのに便利ですよとのことだったので実行してみたところ
[ErrorException]
Undefined index: 削除したマイグレーションファイル名
という例外が発生しました。直接間違ったテーブル名のテーブルを消しても同じ例外が発生し、マイグレーションがきちんと進みません。Stackoverflowにそれっぽい質問があったので、これに従い、
$ composer dump-autoload
としてみましたが、やはり同じ例外が発生します。
結局
同じStackoverflowの質問の別の回答で解決しました。一旦データベースを削除して再度データベースを作り、
$ php artisan migrate
するだけです。一応解決はしましたが、データベースを消さなければならないというのがちょっと、、、という感じですね。
結論
マイグレーションファイルは消さず、ロールバックするのが賢明かなと思います。
2017/04/08 追記
マイグレーションファイルを消してしまった場合はデータベース内のmigrationsテーブルから消してしまったファイル名を削除することで例外が発生しなくなります。作ってしまったテーブルは勝手に消えないので、手動で消しましょう。
nunulkさんコメントありがとうございました。