rake db:migrateを使用して1ステップだけをロールバックする方法


196

db/migrateフォルダーに移行ファイルを追加して実行した後rake db:migrate、前のステップに戻りたいのですが、それVERSION=nを行うには正しい方法だと思いますが、使用するnの正しい値がわかりません。現在のn値を確認​​するコマンドはありますか?

誰もが使用方法についての完全な指示を提供できればそれは素晴らしいでしょうrake db:migrate

回答:


355

はじめに

rake db:rollback 一歩戻ります

その後

rake db:rollback STEP=n

あなたをロールバックしますn移行nあなたがロールバックしたい最近の移行の数ですが。

詳細はこちら


95

最新の移行をロールバックします。

rake db:rollback

n最新の移行をロールバックします。

rake db:rollback STEP=n

移行を実行するためのRailsガイドに、レイクのためのRails移行タスクの使用に関する詳細な説明があります。


ここにいくつかあります:

  • rake db:migrate -まだ実行されていないすべての移行を実行します
  • rake db:migrate VERSION=20080906120000 -必要なすべての移行(アップまたはダウン)を実行して、指定されたバージョンに到達する
  • rake db:migrate RAILS_ENV=test -特定の環境で移行を実行する
  • rake db:migrate:redo -1つのマイグレーションをロールバックして、再度実行します
  • rake db:migrate:redo STEP=n-最後のnマイグレーションをロールバックして、再度実行します
  • rake db:migrate:up VERSION=20080906120000- up指定された移行のメソッドを実行します
  • rake db:migrate:down VERSION=20080906120000- down指定された移行のメソッドを実行します

そして、移行のバージョン番号をどこから取得するかについての質問に答えるには:

バージョンは、移行のファイル名の数字のプレフィックスです。たとえば、バージョン20080906120000に移行するには、次を実行します。

$ rake db:migrate VERSION=20080906120000

(Railsガイドのマイグレーションの実行から)


2
rake db:rollbackが最新の移行をロールバックするように機能しなかったとき、rake db:migrate VERSION = <second last version date>を使用する必要があり、正常に機能しました
Omni

8

最善の方法は、ダウンまたはアップを使用して特定の移行を再度実行することです(レール4です。変更です)。

rails db:migrate:up VERSION = timestamp

次に、タイムスタンプを取得する方法について説明します。この道に行く

/ db / migrate

元に戻す移行ファイルを特定します。そのファイル名からタイムスタンプを選択します。


これは質問に答えるものではありませんが、確かに最良の方法です。ステップごとにロールバックすると、特にグループ内のソフトウェアで作業しているときにミスが発生する可能性があります。

5

バージョンがの場合20150616132425、次を使用します。

rails db:migrate:down VERSION=20150616132425

1

他の人々はロールバックの方法をすでに回答していますが、移行のバージョン番号を特定する方法も尋ねました。

  • rake db:migrate:status マイグレーションのバージョン、名前、ステータス(アップまたはダウン)のリストを提供します
  • ファイル名にタイムスタンプが含まれている移行ファイル、つまりバージョン番号を見つけることもできます。移行は次のフォルダにあります:/db/migrate

ちなみに、ステータスコマンドを実行すると、次のような行が表示されることがあります。********** NO FILE **********これらのマイグレーションは、ギット。
BjarneD 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.