100

Rails アプリで、たくさんある移行のうち 1 つだけを実行しようとしています。これどうやってするの?その前後に移行を実行したくありません。ありがとう。

4

11 に答える 11

171

rake db:migrate:redo VERSION=xxxxxxx、しかしdownそれはupステップを実行します。これは、ダウン ステップを一時的にコメント アウトすることと組み合わせて行うことができます。

于 2009-08-26T03:04:36.113 に答える
73
rake db:migrate:up VERSION=1234567890

同様rake db:migrate:downに、特定の移行を停止します。で利用可能な rake タスクのリストを取得できますrake -T

于 2009-08-26T09:03:51.413 に答える
25

変更された単一の移行を実行する必要があり、他のすべての移行とは別に再実行する必要がありました。コンソールを起動して、次のようにします。

>> require 'db/migrate/your_migrations.rb'
=> ["YourMigrations"]
>> YourMigrations.up
=> etc... as the migration runs
>> YourMigration.down

もっと便利なことに、これはレーキタスクなどに入れることができます。

于 2009-09-13T08:37:49.207 に答える
19

rake db:migrate:up VERSION=version_no

特定の移行スクリプトを移行 (追加) します

rake db:migrate:down VERSION=version_no

特定の移行スクリプトを削除します

于 2013-06-02T10:34:58.803 に答える
13
rake db:migrate VERSION=20098252345

それを試してみてください。

于 2009-08-25T22:30:47.163 に答える
4
rake db:migrate:redo version='xxxx'   

xxxx を必ず引用符で囲んでください。xxxx は移行のタイムスタンプ (または移行 ID) です。

を使用して、行った以前の移行のタイムスタンプ (移行 ID) を確認できます。

rake db:migrate:status    
于 2014-11-24T03:08:51.177 に答える
1

これを開発で非常に簡単にするユーティリティメソッドがあります。あまりにも多くの移行を作成することを回避するのに役立つことがわかりました。通常、移行が展開されるまで移行を変更します。

http://fullware.net/index.php/2011/05/26/easily-load-rails-migrations-for-console-execution/

于 2011-06-15T03:52:15.077 に答える
1

コンソール経由で移行クラスを実行する方法が必要です。移行コードを認識できないようです。

ただし、コメントが示すように、移行は順番に実行することをお勧めします。使用する:

rake db:migrate VERSION=##########

スクリプト/コンソールへの移行でコードをコピーして貼り付けますか?

于 2009-08-26T02:54:57.673 に答える
0

私は、移行を大幅に変更するときに開発でこの手法を使用します。大量に移行して途中でデータを失いたくありません (特に、移行に時間がかかるレガシー データをインポートする場合)。再度再インポートする必要はありません)。

これは 100% ハックであり、本番環境でこれを行うことは絶対にお勧めしませんが、うまくいくでしょう:

  1. 再実行するマイグレーションをそのディレクトリから一時的な場所に移動します
  2. 同じ名前で別の移行を生成する
  3. 元の移行コードをコピーして、新しく生成された移行ファイルに貼り付けます
  4. 新しい移行を実行する
  5. 新しく生成された移行ファイルを削除します
  6. スキーマの移行を編集して、最新の値を削除します
  7. 古い移行ファイルを復元する
于 2016-10-06T20:26:17.703 に答える