2016-05-01 8 views
2

Also zuerst lief ich makemigrations und dann lief ich migrate und bekam den Fehler ValueError: The database backend does not accept 0 as a value for AutoField.Wie Makromigrationen nach dem Auftreten eines Fehlers wiederholen?

ich voraus Also ging, verändert meine models.py diesen Fehler zu beheben.

Jetzt, wenn ich makemigrations wieder neu starten, funktioniert es. Dann hat migrate eigentlich nichts anderes gemacht, als den Fehler erneut anzuzeigen. Es gibt also eine Migration, die schlecht ist, dann ist eine danach richtig.

Also habe ich versucht, ./manage.py migrate --fake mainapp zero nach dem Lesen auf Stack Overflow laufen und jetzt sagt es django.db.utils.OperationalError: (1050, "Table 'mainapp_article' already exists").

Irgendwelche Ideen, wie ich dahin zurückkommen kann, wo ich angefangen habe, und die Makemigrationen jetzt mit dem Fehler wiederholen, der von models.py entfernt wurde?

Antwort

7

1) Identifizieren Sie Ihre letzte Erfolg Migration:

./manage.py showmigrations mainapp 
[X] 0001_initial 
[X] 0002_auto_20160425_0102 
[X] 0003_auto_20160426_2022 
[X] 0004_auto_20160427_0036 

2) wandert dann benutzen, um Ihre Datenbank an den angegebenen Migrationspunkt zu migrieren.

In diesem Beispiel nehme ich an, dass die Migration von 0003 erfolgreich war, während die 0004 nicht war.

3) Entfernen Sie die Migrationsdatei

rm mainapp/migrations/0004_auto_20160427_0036.py* 

4) Führen Sie makemigrations und wieder wandern.

+1

Autsch ... "Showmigrations" -Option wurde in Django 1.8 eingeführt. https://docs.djangoproject.com/ja/1.9/ref/django-admin/#django-admin-showmigrations – slackmart

+0

Ich sprang gerade auf Django 1.9. Ich werde die Frage aktualisieren. Vielen Dank! – User

0

Wenn Sie eine schlechte Migration haben, sollten Sie sie einfach entfernen und neu generieren.

Verwandte Themen