web-dev-qa-db-fra.com

Django manage.py: Migration appliquée avant sa dépendance

En exécutant python manage.py migrate je rencontre cette erreur:

Django.db.migrations.exceptions.InconsistentMigrationHistory: Migration
<appname>.0016_auto_<date2>_<time2> is applied before its dependency
<appname>.0001_squashed_0015_auto_<date1>_<time1>

l'exécution de showmigrations renvoie:

<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)

Hier, j’essayais d’extraire des extensions Django, lorsque tout cela s’est égaré après que j’ai lancé des requêtes SQL directes et que j’ai réinitialisé le disque avec git. J'apprends encore sur les migrations, donc je ne comprends pas ce qui ne va pas, car il me semble que les deux migrations ont déjà été appliquées.

Merci de votre aide!

15

Vous avez écrasé les migrations, de sorte qu'une des dépendances que 0016_auto_<date2>_<time2> avait maintenant fait partie des migrations écrasées nouvellement créées. Pendant ce temps, le 0016_auto_<date2>_<time2> a déjà été exécuté et vous essayez maintenant d'exécuter la migration bloquée. 

Personnellement, je ne sais pas s'il y a un moyen de résoudre ce problème automatiquement. Vous devrez résoudre les problèmes vous-même. Si vous avez le contrôle de version, annulez ces modifications et essayez de repenser à la manière dont vous devriez écraser la migration sans affecter les anciennes. 

8
masnun

lancer ce python manage.py dbshell

INSERT INTO public.Django_migrations(app, name, applied)
VALUES ('YOUR_APP_NAME, '0017_<modelname>_squashed_0019_auto_<date3>_<time3>', now());

et ça devrait aller. Si votre migration changeait beaucoup vers la base de données, alors je crains que ce ne soit pas si facile de la réparer.

0
test30