2016-12-16 14 views
0

私はDjango 1.9.8のWebサイトで作業しています。デモ用に更新されたバージョンをサーバーにデプロイしようとしています。マイグレーションと一致しない既存のデータベースへの移行

これを開発している私がDjangoを学んでいたので、データベースの問題にぶつかったときにマイグレーションを削除したり、新しいものを作成したりするのは間違いでした。これは、既存のデータベースを削除するだけで、既存のデータベースデータを失うことなくデモサーバーにデプロイするための問題を引き起こしているときに、私の開発者でうまく動作します。

デモサーバーの既存のデータベーススキーマの移行はありません。manage.py makemigration <myappname>を実行すると、アプリケーションの初期移行が作成されます。 manage.py migrate <myappname>を実行しようとすると、テーブルがすでに存在していることがわかります(移行はデータベースで必要な変更を行うのではなく、それらのテーブルをすべて追加しようとしているためです)。

現在のデータベースに基づいて最初の移行を作成する方法はありますか?それで、現在のデータベースを最新のものに変更する移行を行うためにmakemigrationsを実行できますか?

これは既にどこかで答えられている場合、私は見て、答えを見つける幸運を持っていませんでした。

ありがとうございます!

+0

をDjangoのドキュメントのこのセクションを見てみましょう//ドキュメント。 djangoproject.com/ja/1.10/howto/legacy-databases/これはあなたを助けるかもしれない – Ire

+0

あなたのコードは確かにバージョン管理されていますか?移行を削除した変更を元に戻すことはできませんか? –

答えて

1

django_migrationsテーブルに移行のエントリがあるため、Djangoは移行が既に実行されていると考えます。これはdjangoがすでに完了している移行を登録するところです。 postresに入り、必要のない移行の行を削除する必要があります。これは、あなたのmodels.pyと一致するdbスキーマを前提としています。違いがある場合は、マイグレーションファイルを手作業で編集して不一致を取り除くか、一時的にmodels.pyを修正して一致させる必要があります。

​​

今、アプリ内のすべての移行フォルダーを削除して実行します。あなたのmodels.pyや移行が現在のDBスキーマと一致するように編集された場合 は--fake-初期

移行./manage.pyとあなたは今ここを見て、違いに移行を実行する実行./manage.py makemigrations、その後も

を移行します。https::Django 1.8: Create initial migrations for existing schema

関連する問題