2012-01-17 16 views
2

私はstoreのアプリに約50の移行を持っていますが、それらのうちのいくつかはschemamigrationで、一部はdatamigrationです。今私は0037_some_values_to_objectsの前に0039_add_column_is_worldwideを実行したいと思います。だから、名前は0037_add_column_is_worldwide0039_some_values_to_objectsに変更されました。南の移行の順序を変更する方法

新しいデータベースに対してsyncdbを実行したときに問題なく動作しますが、既存のデータベースで新しい移行用に移行しているときにこのエラーが発生します。

exceptions.InconsistentMigrationHistory(問題) south.exceptions.InconsistentMigrationHistory上げる:次のオプションが用意されて一貫性のない移行履歴 を: --merge:ちょうど任意の潜在的な依存関係の競合を無視して移行を試みます。

私は自分のデータを失いたくないので、これらの移行の順序を変更することはありますか?

+0

移行名を変更する前に、dbを移行36にロールバックしましたか? – szaman

+0

いいえ、私はロールバックしていませんでした! – Ahsan

答えて

4

移行が実行されたときにDBに格納されるため、既に移行を適用している場合は、迷子になります。あなたの選択肢:

  • フラッシュ移行テーブルは
  • ロールバック(名前変更前)これらの移行
  • 偽物がこれらの移行は(--fake移行(マイグレーション呼び出す場合、すべての移行を再度実行します)が、数字はDB内の数字と矛盾する可能性があります)

ロールバックは私にとっては最も安全だと思われます。あなたのプロジェクトの誰もが同じようにしてください。

あなたがDEVに残っていると、あなたは何PRODデータベースを持っていない場合、あなたは常にゼロから再起動することができます。

  • フラッシュ南デシベル
  • 移行は、私はあなたを推測
+0

ありがとう、本当にそれを感謝します。 – Ahsan

+0

あなたは最終的にどのソリューションを選択しましたか? –

+0

あなたの最も安全なソリューション:)私はプロダクトデータベースを持っているので、 'flush'は危険にさらされます! – Ahsan

0

を--fakeデータベースは既に "0037_some_values_to_objects"を行っています。

私はこのようにそれを行うだろう:

前方の内側にコードを削除()と「0037_some_values_to_objects」の他の方法。この移行は何もしません。次に、2つの新しい移行を追加します。

1つのシステムで移行が完了している場合は、削除しないでください。空にします。

関連する問題