移行を削除しないでください。squash them。おそらくあなたが混乱させる可能性のあるファイルを単に削除した場合、回復する最も簡単な方法は、コードを再同期してファイルを元に戻すことです。より複雑なルートは、django_migrations
テーブルからすべてのレコードを削除して、最初からマイグレーションを再初期化することですが、実際に入るよりも多くのステップ/問題があり、推奨しません。
makemigrationsが変更を検出していない理由は、そのアプリケーションに移行フォルダがないためです。 python manage.py makemigrations your_app --initial
を実行すると、マイグレーションが検出されて生成されるか、ファイルとdjango_migrations
テーブルの違いにより、マイグレーションが発生する可能性があります。
--run-syncdb
コマンドは、通常は実際に展開する前にデータを気にする必要はありませんが、移行を使用した後はもう--run-syncdb
コマンドを使用しないでください。例えば、初期の開発時に、ここで私が代わりにマイグレーションを扱うのすべてのモデルチェンジを実行するコードは次のとおりです。
dropdb mydb && createdb mydb && python manage.py migrate --run-syncdb && python manage.py loaddata initial
私はfixtures file内のすべての初期データを保存し、コマンドは、データベース全体を一掃、--run-syncdb
を再構築します実際の移行ファイルをスキップしながら初期データがロードされます。
したがって、データを気にせず、簡単にフィクスチャに移動できるのであれば、DBを削除して再作成することもできます。すべての移行フォルダを自由に削除することができます。また、あなたが実際に移動して移行を使用するまで移動する必要がある場合は、上記のコマンドを使用することができます。 DJANGO 1.11
FOR
UPDATE私は、Djangoの1.11を使用して開始し、フレームワークのモデルに依存していると、実際の移行を持っていない場合は、テストフレームワークは失敗することに気づきました。これは私がすべてを拭き取り、まだ開発中にやり直すために使用している新しいコマンドです。
dropdb yourdb && createdb yourdb && find . -name "migrations" -type d -prune -exec rm -rf {} \; && python manage.py makemigrations name every app you use seperated by space && python manage.py migrate && python manage.py loaddata initial
私は私のプロジェクトのルートにbuilddb.sh
でこれを入れて(次のmanage.pyに)ので、私はちょうど./builddb.sh
を実行することができます。デプロイ時に削除して、事故がないようにしてください!
Right Way To Do™の包括的な説明をありがとう。 'django.contrib.auth'を使ってこれを試している人は、' ./manage.py migrate auth'も忘れないでください。 – Escher