移行では、データベースの現在のデータを維持しながら、あるデータベーススキーマから別のスキーマに変換できます。 Djangoコマンドpython manage.py makemigrations
を使用して移行を作成できます
makemigrations
が実行されるたびに、000n..
ファイルで検出された変更に基づいて、新しい移行ファイルmodels.py
が追加されます。
Models.pyに小さな変更を加えた後、makemigrationsを実行したいが、以前の移行がまだ使用されていないため、一緒にマージできるため、主に本番環境で各移行を実行するため、新しい移行を作成したくない場合がありますデータベースに大量のデータがある場合は時間がかかる可能性があるため、移行を事前にマージすることをお勧めします。
新しい移行0n ..を既存の移行とマージする方法0(n-1)..はありますか?
探しているコマンドは squashmigrations です。特定のアプリの未適用の移行をすべて1つのファイルにマージします。
Makemigrationsを実行したいが、以前の移行がまだ使用されていないため、新しい移行を作成したくない
これは問題ではありません。Djangoは、移行を上から下に実行します。つまり、最新の移行ファイルは、他の以前の移行ファイルが実行されるまで待機します。
本番環境で各移行を実行すると、データベースに大量のデータがある場合、多くの時間がかかる可能性があるため
データベースにはどのくらいのデータがありますか?本当に多ければ、レプリケーションと冗長なdbサーバーが既にあるはずです。この場合、読み取りと書き込みを1つのスレーブサーバーに切り替え、マスターで移行を実行します。その後、トラフィックをマスターに戻します。その前に、トラフィック間のラグが0であり、新しいスキーマがそれらの間で適切に複製されることを確認してください。