2017-07-25 16 views
2

私はDjango 1.8とPostgreSQL 9.4でEコマースWebサイトを構築しています。 Djangoの移行に問題が発生するのを避けるために、特に移行を実行できない場合や、移行を削除してデータベースを再構築しなければならない場合に、データベースを変更する際にどのような技術を使用できるかを学ぶことに興味があります。バックアップから復元する。Djangoの移行に関する問題を回避するテクニック

私は、データベーススキーマを変更して移行を再実行すると、約50%の時間しか実行できないことを発見しました。明らかに私はいくつかのことを間違っている。悪い点は、移行がうまくいかないときに、なぜ失敗したのか、移行ファイルを変更して実行する方法を理解することが必ずしも容易ではないということです。そのような状況では、私はいつもデータベースを削除してからやり直す必要があります。これは開発には受け入れられますが、私が生産に入るときはそれは良い戦略ではありません。

モデルクラス/データベーススキーマを変更してDjangoの移行が実行される確率を高めるために、「ベストプラクティス」や「しないでください」とは何ですか?また、マイグレーションが実行されず、データベースを最初から再構築する必要がある場合にデータベースを復元できるようにするための手順はありますか?私は1人のスタートアップだということを付け加えて、同じコードベースから作業するチームが持つ紛争の問題はありません。

+1

最初の1以上を好むあなたは何があなたが移行して取得エラーであることを例のいくつかを投稿する必要があります。 –

+0

これはいい考えですが、データベースを再構築する前に残念ながら私は記録しませんでした。 – William

+0

偽のマイグレーションを行うことができないほど広すぎて、マイグレーションファイルを自分で編集してエラーを解決することができます。デフォルト値のエラーを避けるために、null可能なフィールドを持つことができます。次に、dBをバックアップし、次にマイグレートしてからdBをリロードするオプションもあります。 @ウィリアムもう一つの考えは、私は以下の答えに同意しないと私はそれが恐ろしい考えだと思うです –

答えて

0

これらの技術は、私は、サーバー上でそれに働いているものを同じ環境でローカルに

  1. ワークを使用していますものです。同じバージョンのDjangoとデータベースサーバーは、移行自体をプッシュし、無視せず、移行を使用してサーバー上で移行します。
  2. これは私が手動で移行したときに一度使用したもので、SQLコマンドを使ってテーブル、インデックス、リレーションシップを手動で作成しても正しく動作しました。

私は

+0

まず、運用サーバーの移行とdB状態が混乱します。私は最初のものを理解していない方法です。あなたのローカルマイグレーションからサーバー上に1つを作成した場合の違い –

+0

gitのようなVCを使用するときは、マイグレーションファイルを無視せずにすべてをプッシュし、それらを使用してサーバー上でマイグレーションします私の考え方によれば効率的ではないサーバー上でのマイグレーションを行うことが多いため、マイグレーション時のエラーが軽減されます。 –

+0

ローカルからマイグレーションを作成してサーバーで使用し、2番目のケースでマイグレーションを作成すると、どちらも同じではありません。また、同じプロジェクトに取り組んでいるチームがあれば、このソリューションは恐ろしいことになります。 –

関連する問題