5

Migration.backwards()メソッドを実行して、前回の移行 (0157) を元に戻したいです。本番サーバーで移行を元に戻しているので、コードの展開中に自動的に実行したいと考えています。デプロイ スクリプトは次の手順を実行します。

  1. プルコードの変更
  2. 移行を実行します。manage.py migrate <app>
  3. 最新のコードを使用するように Apache を更新します。touch django.wsgi

可能であれば、South に 0156 に後方移行するように指示する新しい移行ファイルを作成します。

migrations/0158_backward__migrate_to_0156.py

このコミットされた移行は、本番環境にデプロイされ、manage.py migrate <app>コマンド中に実行されます。この場合、これらの回答で提案されているように、後方移行を手動で実行する必要はありません。

最初はユーザーの支払い用、2 番目はユーザー モデル用の 2 つのデータ移行を作成したとします。これらのデータ移行を元に戻す必要がある場合に備えて、両方の移行に backwards() メソッドを実装しました。これら 2 つの移行を本番環境にデプロイしました。そして突然、支払いの移行にエラーが含まれていることがわかりました。最後の 2 回のデータ移行をできるだけ早く元に戻したいと考えています。それを行うための最速の安全な方法は何ですか?

4

3 に答える 3

3

本番サーバーで移行を元に戻しているので、コードの展開中に自動的に実行したいと考えています。

私見最も安全な道は

  1. 実行しますmanage.py migrate <app> (つまり、0156 までのすべての既存の移行を適用します)
  2. モデルの変更を元に戻す
  3. 走るmanage.py schemamigration <app> --auto

これにより、以前の移行 0156 を効果的に元に戻す新しい移行 0157 が作成されます。その後、manage.py migrate <app>再度実行して新しい移行を適用するだけです。私が理解しているように、コードの展開はそれを行うだけです。

于 2014-01-26T00:49:38.213 に答える