laravelのマイグレーションファイル、削除していい場合とまずい場合。

更新日:

Laravelのマイグレーションで間違えたファイルとかってどうやって削除するの?そのまま削除しちゃって大丈夫なの?

 

Laravelのマイグレーションファイル自体は、間違って作ってしまったファイルなどは、そのまま削除してしまって大丈夫です。PC上であれば、そのままゴミ箱にポイで大丈夫って事です。

ただ、正しい内容の過去のマイグレーション済みファイルは削除すべきではありません。

 

どんなパターンなら削除OKかと削除方法を解説します。

 

間違ったマイグレーションファイルなどは手動削除でOK

php artisan make:migration でマイグレーションファイルを作ったけど、まだphp artisan migrateしてないファイルの場合、

もしそのファイルがやっぱり不要だったり、間違えた内容だから削除したい場合は、そのまま普通にファイルを削除してしまって問題ありません。PCならゴミ箱にポイでOKです。

 

php artisan make:migration でマイグレーションファイルを作って、すでにphp artisan migrate済みのファイルの場合、

マイグレーションファイルはあくまで、php artisan migrate を一回すると、その時だけ作動して、データベースにテーブルとカラムを作成します。次のphp artisan migrate以降では作動しないようになってます。

なので、間違って作ってしまったマイグレーションファイルなどは、削除してしまっても問題ないんですが、

ロールバック(以前の状態に戻す)を使う時に、そのマイグレーションファイル時点には戻せなくなります。

ただ、その間違った内容にロールバックで戻す必要はないでしょうから、そのまま削除してしまえば問題ないです。

ただ、データベースにはmigrate済みのテーブルやカラムが残ってますから、それはphpMyAdminにログインして、手動で削除する必要があります。

 

ロールバックって何?

ロールバックは、前回のマイグレーション時点の状態にデータベースのテーブルとカラムを戻す事。

例えば、countカラムを今回のマイグレーションで追加したけど、やっぱこのカラム使わないから、一つ前のマイグレーションした時の状態に戻したいって場合は、ロールバックを使う事で元に戻せるようになってるんだ。(ロールバックする事で、countカラムがデータベースから消えるって事)。

ただ、ロールバックは手動でマイグレーションファイルを削除したり、記述を後から変更してる場合、正しく動かず、前回のマイグレーション時点に戻すはずが、前前前回の状態に戻っちゃった(必要なカラムがデータごと消えた)なんて事もありうるから、よく分からない状態で絶対に使わない方がいいよ。

一人で作業してる場合は、マイグレーションファイルを手動で削除、そしてphpMyAdminからカラムを手動で削除でも、同じ事はできるからね。

Neby

LaravelのMigrationでカラムを追加、編集、削除のやり方。初心者でもよく分かるように解説!

 

正しい内容の過去のマイグレーションファイルは削除すべきではない

正しい内容が書かれた、過去のマイグレーション済みファイル達は、削除せず取っておくべき(GITなどでバックアップしておくべき)です。

というのも、例えばデータベースを間違えて削除してしまったとか、新しいデータベースに同じテーブルやカラムをコピーしたい場合、過去のマイグレーションファイルでphp artisan migrate すれば、データベース上のテーブルやカラムを現在の状態まで一発で戻せるからです。

 

例えば、PC上でサイトを作ってるとする。それをサーバーにデプロイ(アップロード)する際、この過去のマイグレーションファイル達がサーバーのMySQLデータベースに全く同じテーブルやカラムを作ってくれるわけ。

だから削除しちゃったら、サーバー側のデータベースのテーブルとカラムを全部手動で作り直すはめになるから、削除しちゃダメだよ。

Neby

LaravelのMigrationとは?初心者でも図解で面白いほどよく分かる!

 

最初からデフォルトで入ってるマイグレーションファイルって削除しちゃっていいの?

Laravelインストール時に最初から入ってる日付がすごく昔の謎のマイグレーションファイルが3つくらいあるけど、これって削除しちゃっていいの?

2014_10_12_000000_create_users_table.php

2014_10_12_100000_create_password_resets_table.php

2019_08_19_000000_create_failed_jobs_table.php

こういった名前のファイルがあなたのLaravelにもあるはずです。

 

これは、削除しちゃダメです。

 

なぜかというと、これは、ログイン機能をLaravelに実装する時に必要なマイグレーションファイルだからです。

  • ログインユーザー情報を保存するテーブル
  • ユーザーがパスワードリセットしたい時に使うテーブル
  • エラーを保存するテーブル

がそれぞれこのマイグレーションファイル達によって生成されます。通常Laravelでサイトを作っていく際に必ず必要になる機能ですから、それらは削除しないでください。

実際にphp artisan migrateする際に一緒にマイグレーション(テーブル作成)されます。

 

自分のサイトにログイン機能を完全手動で実装するなど、Laravelのデフォルトログイン機能を使わない場合のみ、削除してしまっても大丈夫です。

 

えー、それ知らなくて、削除しちゃったんだけど。
だったら、また新しいLaravelプロジェクトを作成(インストール)して、そこからコピーしてくれば問題ないよ。
Neby

Laravelのバージョン指定インストールのやり方。超初心者でも必ずできるレベルで解説

 

写真で血圧記録

  • この記事を書いた人

Neby

本を毎日多読しつつ、資産運用、プログラミング、心理学、ネットビジネススキルを猛向上中。貧富の差が広がる5年後、10年後に安心生活を送るためのお金のリテラシー、スキル、資産を一緒に作っていきましょう。

-PHP Laravel入門