[PYTHON] [Django] Wiederholen Sie die Migration

[Django] Wiederholen Sie die Migration

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

Annahme

--Erstellen Sie den App-Namen "Rezept"

Vorgang wiederholen

"Ich möchte die Migration wiederholen" Die hier beschriebene Vorgehensweise wird unten beschrieben.

1. Überprüfen Sie den Verlauf der vergangenen Migration

#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.

2. Löschen Sie alle Tabellen

Löschen (löschen) Sie alle Tabellen, die durch die Migration in der Vergangenheit in der Verbindungsziel-DB generiert wurden.

3. Löschen Sie den Inhalt des Migrationsordners der App

[App-Name] Löschen Sie den gesamten Inhalt des Ordners .migrations (In diesem Fall Rezept.migrationen)

4. Löschen Sie den Migrationsverlauf

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.

5. Generieren Sie eine App-Migrationsdatei

Generieren Sie die Migrationsdatei wie gewohnt

>python manage.py makemigrations [App Name]

6. Führen Sie migrate aus

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.

Referenz

Zusammenfassung der Django-Migration Ich habe mit manage.py migrate etwas Seltsames gemacht.

Recommended Posts

[Django] Wiederholen Sie die Migration
Django
Django-Update
Django Note 4
Migrieren Sie Django-Anwendungen, die unter Python 2.7 ausgeführt werden, auf Python 3.5
Django Memorandum
Django-Suche
Django Installation
Django Zusammenfassung
Django # 2 (Vorlage)
Django Note 5
Django zum Anfassen
Berühre Django
Django Memo
Django Zusammenfassung
Django Grundlagen
Django Shoho
Django Grundeinstellungen
Django + Docker
Django Glossar
Django Installation
Django: Referenzen
Django Note 1
Django Note 3
Django Note 2
Django-Start
Django Memo
Django NullCharField
Wiederholen Sie alles für den Django-Anmeldebildschirm