2016-07-16 8 views
1

35回のマイグレーションを実行して(テストの前など)実行に時間がかかるアプリがありますので、それらをスクアッシュしたいと思います。新しい移行を使用してマイグレーションをスムーズにする

squashmigrationsコマンドは、操作を99から88に減らしますが、依然として最適ではありません。これはおそらく、複数のRunPythonオペレーションがDjangoが他のオペレーションを最適化することを妨げるためです。これらのすべてのRunPython操作は、データベースが空であるため、潰れた移行では役に立たない。 Django 1.10では、elidableパラメータではこの場合スキップすることができますが、依然として多くの混乱が残っています。

は、それが移行の長いリストの押しつぶされたバージョンとして新鮮な初期の移行を使用することをお勧めです:

は、それゆえ私の質問、Djangoは発生初期の移行に近い私は押しつぶされた移行のために念頭に置いていた何でしたか?あなたはどうしますか?

答えて

1

テストまたは本番データベースに重要なデータがない場合は、最初の新しい移行を使用することができ、それが適切な解決策になります。

私はこのトリックを何度も使ってきましたが、それは私のために働きます。

いくつかの考え:

  • 時々、まず、あなたのローカルアプリケーションのいずれかの移行を作成し、すべての残りのためにする必要があります。

  • manage.py migrateを空のdbで実行する前に、すべてのことを確認してください。

注:あなたはメモリテストで実行および/またはその可能な場合のsqliteでテストを実行しようとすることができ、あなたのテストをスピードアップします。

+0

ありがとうございます!しかし、どのように初期移行を生成しますか?現在のすべての移行を別のフォルダに移動しますか? – pintoch

+1

私はローカルの各アプリケーションの下にあるフォルダ「マイグレーション」を削除します。一般的に私はPostreSQLを使用します。最も単純なケースでは、私はこれを実行します: 'dropdb dbname && createdb dbname && rm -rf some_application/migrations && python manage.py migrate' –

関連する問題