Daher arbeite ich gerade schnell an einer Django= App und passe models.py ständig an. Im Laufe von ein oder zwei Tagen des Programmierens und Testens generiere ich ein paar Dutzend Migrationen Dateien. Manchmal reiße ich das Schema wirklich auseinander und führe es komplett neu aus. Dies führt dazu, dass sich der Migrationsprozess über Standardwerte und Nullwerte usw. beschwert. Wenn möglich, möchte ich nur das gesamte Migrationsmaterial zerkratzen und erneut ausführen -Starten Sie die Migrationen jetzt, wo ich endlich weiß, was ich tue. Mein bisheriger Ansatz war der folgende:
__init__.py
.DELETE FROM south_migrationhistory WHERE app_name='my_app';
./manage.py makemigrations my_app
- dies erzeugt ein 0001_initial.py
Datei in meinem Migrationsordner../manage migrate my_app
- Ich erwarte, dass dieser Befehl alle meine Tabellen neu erstellt, aber stattdessen heißt es: "Keine Migrationen anzuwenden."Was gibt?
Ist auch das south_migrationhistory
Datenbanktabelle noch im Spiel, nachdem ich nach Süden gewechselt bin und auf Django 1.7?
Vielen Dank.
Der in meiner Frage beschriebene Schritt-für-Schritt-Plan funktioniert also, aber anstatt Zeilen aus der Datenbanktabelle south_migrationhistory
Zu löschen, musste ich Zeilen aus der Datenbanktabelle Django_migrations
Löschen.
Der Befehl lautet: DELETE FROM Django_migrations WHERE app='my_app'
Sobald dies erledigt ist, können Sie Ihre Migrationen von Grund auf neu ausführen.
Ich wollte nur alle Schritte in ein Befehlsformat bringen:
ANMERKUNG: Die folgenden Befehle sind ziemlich destruktiv, es ist ein Mittel, um start from scratch
Als das OP gefragt.
Nach einem Kommentar von mikeb
dachte ich, diese Zeile hinzuzufügen:
PRE - PRÜFEN SIE, WELCHE DATEIEN SIE LÖSCHEN WÜRDEN
find . -path *migrations* -name "*.py" -not -path "*__init__*"
Passen Sie dann den Befehl in Schritt 1
An einen Befehl an, der für Ihre Entwicklungsumgebung geeignet ist.
find . -path *migrations* -name "*.py" -not -path "*__init__*" -exec rm {} \; # make sure to be in your projects path
Sudo -u postgres bash -c "psql -c \"DROP DATABASE rootedin;\""
Sudo -u postgres bash -c "psql -c \"CREATE DATABASE rootedin;\""
Sudo -u postgres bash -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE rootedin to vagrant;\"" # vagrant is my current user
python3 manage.py makemigrations
python3 manage.py migrate