1

DjangoとElasticbeanstalkを使用して小さなWebアプリケーションを開発しています。 2つの環境(ステージングとプロダクション)でEBアプリケーションを作成し、RDSインスタンスを作成してEB環境に割り当てました。DjangoとElasticbeanstalk/MultipleデータベースのためのDjango移行プロセス

私はローカルデータベースを使用していますが、AWSへのデプロイメントにかなりの時間がかかります。

ただし、移行に問題があります。私は数分おきにローカルで開発とテストを行うため、ローカルと異なる2つの環境で異なる移行をする傾向があります。

一度、特定の環境にアプリケーションの現在のバージョンをデプロイすると、テーブルがすでに存在するか存在しないため、 "manage.py migrate"はほとんどの場合失敗します。テーブル)。

私は、開発、ステージング、およびプロダクションに複数の環境を使用する場合、同じ構造を常に反映していないいくつかの共通のデータベースインスタンスを使用すると、移行プロセスをどのように処理するのだろうと思いましたか?

コードリポジトリとebデプロイメントからマイグレーションファイルを除外し、すべてのデプロイメント後にマックマイグレーション&を実行する必要がありますか? .ebextensionsを使用して自動的に移行を実行して、インスタンスの1つを通して手動ですべての移行を適用する必要がありますか?

異なる環境で異なるデータベースインスタンスで同じDjangoアプリケーションを使用する場合の推奨方法は何ですか?

答えて

1

ある時点でテーブルまたは移行を削除した可能性があります。

makemigrationsを実行すると、djangoはmigratinsを作成し、migrateを実行すると設定ファイルで指定されたデータベースを作成します。

マイグレーションの作成を継続し、特定のデータベースで実行しないと、1つのことは、絶対にうまくいくことです。 databsseに切り替えて移行を実行するたびに、すべてのデータベースが今までdjango-migrationsテーブルで実行されていた時点までのポイントを保存し、次の移行の実行を開始するため、移行が処理されます。

問題を解決するには、すべてのデータベースと移行ファイルを削除して、今すぐテストするようにしてください。いずれかのサーバーでマイグレーションやデータベースを削除するまで、問題は解決します。

貴重なデータがある場合は、マイグレーションファイルとテーブルを参照して、物事を分析して管理する必要があります。

+0

しかし、それはまさに私の言いたいことです。開発とテストの目的のために、ある時点でテーブルを削除する(または何か他のことをする)可能性があります。また、MigrationsフォルダをElastic Beanstalk環境に配備すると、エラーを避けるために、他のDBにも同じトランザクションを適用する必要があります。移行ファイルを無視して、すべてのシステムが独自の移行を維持できるようにするのは苦労ですか? – wuser92

+0

テーブルを削除することはできますが、データベースに対して直接操作は実行しません。 django ORMを使って行います。テーブルを削除する場合は、そのモデルを削除して移行を行う必要があります。その後、各サーバー上で個別に移行すると、問題に直面することはありません。 – sprksh

+0

私は弾力のある豆を使用していません。しかし、はい、これは正常なことです。移行ファイルは無視され、各サーバー(dev、production、testing)ごとに別々の移行が行われます。通常、gitを使用する場合は、/ gitignoreにmigrations /を入れます。移行ファイルは各サーバー上で個別に生成されます。 – sprksh

関連する問題