1

南を使用して、Mercurialを使用して開発と本番の両方でデータベースの変更を管理したいと思います。しかし、どうしたらいいのかわからない!

南をまったく使わないプロジェクトがあるとしましょう。それは、生産と開発の両方で水銀と同期しています。すべてが正常に機能しています!

さて、いつかアプリケーションテストのモデルに変更を加えたいと思います。ですから、私の開発環境にいるのは

1. pythonmanage.pyconvert_to_southテスト
2.pythonmanage.py移行

モデルを変更してから

3.pythonmanage.pyスキーマ移行テスト--auto
4.pythonmanage.py移行

今、私はすべてを水銀にコミットします

5. hg addremove
6. hgcommit-m「南に変換されて変更されたもの」
7.hgプッシュ生産

uatではすべてが正常に機能しているようですが、本番環境では機能させることができません:(

したがって、正しいワークフローは、本番環境にログインして変更を適用することだと思いました。

1.hgアップデート

次に、アプリケーションを移行するだけです

2.pythonmanage.py移行

しかし、これは機能していません。「test_table」という奇妙なエラーがすでに存在します(何らかの理由で、南はテーブルを再度クレートしたいと考えています)。また、Pythonのmanage.py移行テスト(移行を行う前に偽の0001)を実行する必要があるDjangoプロジェクト、開発、本番環境への南の追加をここで読みましたが、これも機能しませんでした(テーブルがないためにエラーが発生しました)またはそのようなもの)。

それで ?私は何をすべきか ?開発と環境の両方に移行を適用する正しい方法は何ですか?アプリケーションの/migrations/ディレクトリをMercurialから外して、実行する必要があります

pythonmanage.pyconvert_to_southテスト
と
python manage.py schemamigration test --auto

開発と生産の両方に?

4

1 に答える 1

4

convert_to_south一緒にチェーンされた2つのコマンドです:schemamigration --init+ migrate --fake。したがってinit、通常どおり移行を作成し、fake手動で移行を適用する必要がないことを確認します。ただし、サーバーは移行を作成するのではなく取得するため、実際に実行する必要があり、サーバーはmanage.py migrate test 0001 --fake機能しているはずです。syncdbおそらく、インストール後に実行していないため、サーバーDBにテーブルsouthがありません。south

したがって、実行します。

manage.py syncdb
manage.py migrate test 0001 --fake
于 2012-05-13T05:19:01.803 に答える