1. ホーム
  2. laravel

[解決済み] Laravelで特定のマイグレーションをロールバックする

2022-03-24 05:10:22

質問

欲しいもの

のみをロールバックする。

Rolled back: 2015_05_15_195423_alter_table_web_directories


私は走る

php artisan migrate:rollback 私のマイグレーションのうち3つがロールバックしています。

Rolled back: 2015_05_15_195423_alter_table_web_directories
Rolled back: 2015_05_13_135240_create_web_directories_table
Rolled back: 2015_05_13_134411_create_contacts_table


削除する

の両方が web_directories と私の contacts テーブルを意図せずして そんなことは絶対にしたくないので、その特定のものだけをロールバックすることができれば、この惨事は起きないでしょう。

解決方法は?

を見ると migrations テーブルで、各マイグレーションにバッチ番号があるのがわかると思います。したがって、ロールバックするときは、最後のバッチに含まれる各移行をロールバックすることになります。

もし、一番最後の移行だけをロールバックしたいのであれば、バッチ番号を1つ増やせばいいだけです。そして、次に rollback コマンドを実行すると、その1つのマイグレーションだけがロールバックされ、それ自体が「バッチ」になっています。

また、Laravel5.3以降では、そのまま実行することも可能です。

php artisan migrate:rollback --step=1

これは、バッチ番号が何であろうと、最後のマイグレーションをロールバックします。