移行の「self.drop」にバグがあり、その移行を過ぎてロールバックできません。ゼロから始めて移行 001 から構築するにはどうすればよいですか? また、データを失うことなくこれを行う方法はありますか (これは単なるテストですが、それでも...)
3 に答える
self.down移行のすべてのステートメントにコメントを付け、以前のデータベースバージョンにロールバックできます。
次に、移行前にgui / webデータベースクライアントを使用して手動で変更を適用し、データベーススキーマと一致させます。
その後、移行を再度実行できるようになり、データが失われることはありません。
rake db:drop
rake db:create
rake db:migrate
データベースがリセットされ、すべての移行が実行されます。データを失いたくない場合は、プラグインyaml_dbを使用して保存できます:
rake db:data:dump # stores all data in db/data.yml
...
rake db:data:load # loads db/data.yml to database
移行中にエラーが発生した場合は、それを編集してからロールバックを試みることができます。
これは古い質問だと思いますが、私はまだ関連しています。データベースを最初から再作成する場合、ロールバックして移行を再実行するのではなく、実行するだけです。
rake db:setup
これにより、データベースが削除され、作成され、すべての移行の現在の結合状態がデータベースに入力されます。これは、間違いなく大規模なシステムでは、すべての移行を実行しても機能しなくなる可能性があるためです。ただし、実行するschema.rb
と常に機能します。
私のアドバイスは、移行を作成したばかりで、移行をチームまたは展開にプッシュする前に追加/タイプミス/修正を行いたい場合を除き、移行のロールバックをできるだけ避けることです。