Verwenden von django 1.7.7 Ich möchte die Migration von django verwenden, um ein Feld hinzuzufügen oder zu entfernen. also habe ich model.py modifiziert und ran
%Vor%Dann überprüft die Admin-Seite, es ist nicht aktualisiert. Dann habe ich versucht, den Migrationsordner zu entfernen und es erneut versucht; Der Migrationsbefehl besagt, dass keine Migrationen angewendet werden müssen.
Wie kann ich die Migration durchführen? Hinweis: Ich möchte die neue Technik verwenden, die die Migration von Django verwendet, nicht den alten Süden.
Das Löschen des Migrationsverzeichnisses ist niemals eine gute Idee, da Django dann nicht mehr weiß, welche Migration angewendet wurde und welche nicht (und sobald eine App irgendwo bereitgestellt wird, kann es sehr schwierig werden, die Dinge wieder synchron zu bekommen).
Haftungsausschluss : Wenn solche Dinge auftreten, ist es am besten, die Datenbank zu sichern, wenn sie etwas Wertvolles enthält. Wenn es in der frühen Entwicklung nicht notwendig ist, aber sobald Dinge auf dem Backend nicht mehr synchron sind, besteht die Chance, dass sich die Dinge verschlechtern. : -)
Zum Wiederherstellen können Sie versuchen, Ihre Modelle so anzupassen, dass sie genau entsprechen, bevor Sie die Felder hinzugefügt / entfernt haben . Dann können Sie
ausführen %Vor% was zu einer ersten Migration führt ( 0001_initial...
). Dann kannst du Django sagen, dass er diese Migration fälschen soll, was bedeutet, dass er seinen internen Zähler auf dieses 0001_initial
setzen soll:
Mit Django 1.7:
%Vor%Mit Django & gt; = 1.8:
%Vor% Versuchen Sie nun, Ihr Modell zu ändern und makemigrations
erneut auszuführen. Es sollte jetzt eine 0002_foobar
Migration erstellt werden, die Sie wie erwartet ausführen können.
Stellen Sie sicher, dass der Ordner migrations/
eine __init__.py
-Datei
Habe eine halbe Stunde darüber verloren.
In meinem Fall wurden die Migrationen nicht in der MySQL-Datenbank reflektiert. Ich habe die Zeile von 'myapp' (in Ihrem Fall 'myproj') manuell aus der Tabelle 'django_migrations' in der mysql-Datenbank entfernt und die gleichen Befehle für die Migration erneut ausgeführt.
Ich finde Django-Migrationen ein kleines Rätsel und tendiere dazu, externe Tools zu bevorzugen (zB Liquibase).
Ich habe jedoch gerade dieses Problem mit "Keine Migrationen zum Anwenden" erfahren. Ich habe auch versucht, den migrations
Ordner zu entfernen, was nicht hilft.
Wenn Sie den Ordner migrations
bereits entfernt haben, ist hier ein Ansatz, der für mich funktioniert hat.
Erzeugen Sie zuerst die neuen "sauberen" Migrationen:
%Vor%Sieh dir dann das SQL an und schaue, ob es vernünftig aussieht:
%Vor%Wenden Sie dann das gleiche SQL auf Ihrer Datenbank an.
Ich benutze Postgres, aber es wird für andere Engines ähnlich sein.
Eine Möglichkeit besteht darin, den Inhalt in eine Datei zu schreiben:
%Vor%Ein anderer ist Pipe die SQL direkt:
%Vor%Oder kopieren und einfügen usw.
Stellen Sie zusätzlich zu den anderen Antworten sicher, dass Sie in models.py managed = True
im Meta jeder Tabelle
Tags und Links django