1. ホーム
  2. ruby-on-rails

[解決済み] 特定のマイグレーションをロールバックする方法を教えてください。

2022-03-22 20:32:46

質問

私は次のようなものを持っています。 移行 ファイル db\migrate\20100905201547_create_blocks.rb

そのマイグレーションファイルを具体的にロールバックするにはどうしたらいいのでしょうか?

解決方法は?

rake db:rollback STEP=1

ロールバックしたいマイグレーションが最後に適用されたものである場合、これを行う方法があります。戻りたいマイグレーションの数だけ1を代入することができます。

例えば

rake db:rollback STEP=5

また、後に起こったすべてのマイグレーション(4、3、2、および1)をロールバックします。

対象となるマイグレーションまで(およびそれを含む)すべてのマイグレーションをロールバックするには、以下を使用します:(この修正コマンドは、元の投稿で誤りを指摘したすべてのコメントの後に追加されました。)

rake db:migrate VERSION=20100905201547

特定のマイグレーションを1つだけロールバックする(順番が違う)には、次のようにします。

rake db:migrate:down VERSION=20100905201547

この操作では、中断しているマイグレーションはロールバックされないことに注意してください -- リストされたものだけです。もしこれがあなたの意図したものでないなら、安全に rake db:migrate を実行すると、その1つだけが再実行され、以前にロールバックされていない他のものはスキップされます。

また、1つのマイグレーションを順番に行わずに移行したい場合は、その逆もあります。 db:migrate:up :

rake db:migrate:up VERSION=20100905201547