python manage.py migrate
このエラーが発生します。
Django.db.migrations.exceptions.InconsistentMigrationHistory: Migration
<appname>.0016_auto_<date2>_<time2> is applied before its dependency
<appname>.0001_squashed_0015_auto_<date1>_<time1>
showmigrationsリターンの実行:
<appname>
[X] 0001_squashed_0015_auto_<date1>_<time1> (15 squashed migrations)
[X] 0016_auto_<date2>_<time2>
[ ] 0017_<modelname>_squashed_0019_auto_<date3>_<time3> (3 squashed migrations)
昨日、Djangoの拡張機能を試していましたが、直接SQLクエリを実行した後、すべてが台無しになり、gitを使用してハードリセットしました。私はまだ移行について学んでいるので、両方の移行がすでに適用されているように見えるので、何が間違っているのか理解できません。
ご協力ありがとうございました!
移行を潰したので、依存関係の1つは0016_auto_<date2>_<time2>
hadは、新しく作成されたスカッシュマイグレーションの一部になりました。一方、0016_auto_<date2>_<time2>
はすでに実行されており、現在、スカッシュマイグレーションを実行しようとしています。
これを自動的に修正する方法があるかどうかは個人的にはわかりません。自分で問題を修正する必要があります。バージョン管理がある場合は、これらの変更を元に戻し、古い変更に影響を与えずに移行を無効にする方法を再検討してください。
次にpython manage.py migrateを再度実行し、修正する必要があります。
これを実行python manage.py dbshell
INSERT INTO public.Django_migrations(app, name, applied)
VALUES ('YOUR_APP_NAME, '0017_<modelname>_squashed_0019_auto_<date3>_<time3>', now());
そして、あなたは元気でなければなりません。データベースへの移行が大幅に変更されていた場合、それを修正するのはそれほど簡単ではないでしょう。
これは私のために働いた。オンラインで何時間も検索した後、この知識を共有してくれた同僚に感謝します。
Dbシェルを起動します
python manage.py dbshell
必要なデータベースを使用します。わからない場合は、「データベースの表示」を実行してください
mysql>use <database_name>;
アプリですべての移行を取得します
mysql> select * from Django_migrations where app='<app>';
すべての移行の横にIDの出力が表示されます。削除する移行を確認します。 IDは361だとしましょう
mysql> delete from Django_migrations where id=361;