だから私はDjangoアプリで急速に反復しており、models.pyを絶えず調整しています。1、2日のプログラミングとテストの過程で、数十の移行を生成します時々、スキーマを実際にバラバラにして完全にやり直します。これにより、移行プロセスでデフォルト値やnull値などについて多くの苦情が寄せられます。 -私がやっていることをようやく理解できたので、移行を開始します。
__init__.py
を除く、migrationsフォルダー内のすべてを削除します。DELETE FROM south_migrationhistory WHERE app_name='my_app';
./manage.py makemigrations my_app
を再実行します-これにより、移行フォルダーに0001_initial.py
ファイルが生成されます。./manage migrate my_app
-このコマンドはすべてのテーブルを再構築することを期待していますが、代わりに「適用する移行はありません」と表示されます。何が得られますか?
また、南をダンプしてDjango 1.7?に切り替えたので、south_migrationhistory
データベーステーブルはまだ使用中です。
ありがとう。
したがって、質問で概説した段階的な計画は機能しますが、south_migrationhistory
データベーステーブルから行を削除する代わりに、Django_migrations
データベーステーブルから行を削除する必要がありました。
コマンドは:DELETE FROM Django_migrations WHERE app='my_app'
これが完了すると、移行を最初から再実行できるようになります。
すべてのステップをコマンド形式にしたかっただけです。
注:以下のコマンドはかなり破壊的であり、OPが要求したstart from scratch
への手段です。
mikeb
からのコメントの後、次の行を追加することを考えました。
PRE-削除するファイルを確認してください
find . -path *migrations* -name "*.py" -not -path "*__init__*"
次に、ステップ1
のコマンドを、開発環境で機能するコマンドに調整します。
find . -path *migrations* -name "*.py" -not -path "*__init__*" -exec rm {} \; # make sure to be in your projects path
Sudo -u postgres bash -c "psql -c \"DROP DATABASE rootedin;\""
Sudo -u postgres bash -c "psql -c \"CREATE DATABASE rootedin;\""
Sudo -u postgres bash -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE rootedin to vagrant;\"" # vagrant is my current user
python3 manage.py makemigrations
python3 manage.py migrate