Dies ist ein Memo für Django-Anfänger. Es gab eine Zeit, in der ich das Modell neu schreiben und die Migration beim Erstellen der Datenbank wiederholen wollte, aber ich hatte Schwierigkeiten mit verschiedenen Fehlern, daher werde ich die Lösung notieren.
[Umgebung] Django 2.01 python 3.7.2
--Erstellen Sie den App-Namen "Rezept"
"Ich möchte die Migration wiederholen" Die hier beschriebene Vorgehensweise wird unten beschrieben.
#Sie können den Verlauf der vergangenen Migration anzeigen
>python manage.py showmigrations
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
[X] 0010_alter_group_name_max_length
[X] 0011_update_proxy_permissions
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
recipe
[X] 0001_initial
sessions
[X] 0001_initial
Das Ergebnis ist wie oben, und das mit x in [] ist der Verlauf der angewendeten Migration. Da dem Rezept auch [x] beigefügt ist, kann beurteilt werden, dass es angewendet wurde.
Löschen (löschen) Sie alle Tabellen, die durch die Migration in der Vergangenheit in der Verbindungsziel-DB generiert wurden.
[App-Name] Löschen Sie den gesamten Inhalt des Ordners .migrations (In diesem Fall Rezept.migrationen)
Löschen Sie den Verlauf mit dem folgenden Befehl mit der Option --fake. (Beim erneuten Anwenden des benutzerdefinierten Benutzers wurde es nur gelöst, wenn alle gelöscht wurden. Daher habe ich alles vom Administrator bis zu den Abschnitten gelöscht.)
>python3 manage.py migrate --fake [Ziel gelöscht werden] zero
#Beispiel:Dadurch wird der Rezeptverlauf gelöscht
#>python3 manage.py migrate --fake recipe zero
Überprüfen Sie, ob der Verlauf mit demselben Befehl wie 1 gelöscht wurde.
admin
[ ] 0001_initial
[ ] 0002_logentry_remove_auto_add
[ ] 0003_logentry_add_action_flag_choices
auth
[ ] 0001_initial
[ ] 0002_alter_permission_name_max_length
[ ] 0003_alter_user_email_max_length
[ ] 0004_alter_user_username_opts
[ ] 0005_alter_user_last_login_null
[ ] 0006_require_contenttypes_0002
[ ] 0007_alter_validators_add_error_messages
[ ] 0008_alter_user_username_max_length
[ ] 0009_alter_user_last_name_max_length
[ ] 0010_alter_group_name_max_length
[ ] 0011_update_proxy_permissions
contenttypes
[ ] 0001_initial
[ ] 0002_remove_content_type_name
recipe
[ ] 0001_initial
sessions
[ ] 0001_initial
Stellen Sie sicher, dass der gesamte Verlauf gelöscht wurde.
Generieren Sie die Migrationsdatei wie gewohnt
>python manage.py makemigrations [App Name]
Führen Sie migrate wie gewohnt aus
>python manage.py migrate
Überprüfen Sie nun die Datenbank und stellen Sie sicher, dass die Tabelle generiert wird.
Das ist es. Wenn Sie Fehler haben, lassen Sie es uns bitte wissen.
Zusammenfassung der Django-Migration Ich habe mit manage.py migrate etwas Seltsames gemacht.
Recommended Posts