31
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravelのmigrationファイルを消してしまったら起きたこと

Last updated at Posted at 2017-04-07

マイグレーションファイルを消した

$ 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さんコメントありがとうございました。

31
36
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?