1

移行の「self.drop」にバグがあり、その移行を過ぎてロールバックできません。ゼロから始めて移行 001 から構築するにはどうすればよいですか? また、データを失うことなくこれを行う方法はありますか (これは単なるテストですが、それでも...)

4

3 に答える 3

1

self.down移行のすべてのステートメントにコメントを付け、以前のデータベースバージョンにロールバックできます。

次に、移行前にgui / webデータベースクライアントを使用して手動で変更を適用し、データベーススキーマと一致させます。

その後、移行を再度実行できるようになり、データが失われることはありません。

于 2009-06-18T10:22:29.743 に答える
0
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

移行中にエラーが発生した場合は、それを編集してからロールバックを試みることができます。

于 2009-06-17T22:13:59.503 に答える
0

これは古い質問だと思いますが、私はまだ関連しています。データベースを最初から再作成する場合、ロールバックして移行を再実行するのではなく、実行するだけです。

rake db:setup

これにより、データベースが削除され、作成され、すべての移行の現在の結合状態がデータベースに入力されます。これは、間違いなく大規模なシステムでは、すべての移行を実行しても機能しなくなる可能性があるためです。ただし、実行するschema.rbと常に機能します。

私のアドバイスは、移行を作成したばかりで、移行をチームまたは展開にプッシュする前に追加/タイプミス/修正を行いたい場合を除き、移行のロールバックをできるだけ避けることです。

于 2014-05-09T19:07:45.623 に答える