Dann ist die Tabelle, die django south zu erstellen versucht, bereits vorhanden und entspricht nicht dem Status Ihrer Datenbank.
Wenn Sie das erste Mal migrieren, denken Sie daran, dass Sie vor der Änderung der Schemamigration den Anfangszustand über schemamigration myapp --initial
und migrate app --fake
festlegen müssen, damit die Datenbank dem Status der südlichen Datenbank entspricht.
manage.py convert_to_south myapp
macht das obige auch als bequeme Methode.
Hinweis django 1,7+ Schiffe mit Migrationen und Süden wird nicht mehr verwendet.
Es sind nur zwei Befehle erwähnenswert.
Geschrieben vom selben Autor wie South, crowd funded. Geh django.
Ich habe gerade ein doppeltes Tabellenproblem lokal behoben und wollte meinen Workflow dokumentieren, um anderen zu helfen.
Der Schlüssel zum Erfolg war das Erstellen einer --empty
-Migration, bevor die neuen Modelle hinzugefügt werden. Der Fluss:
schemamigration --auto
fügte erneut eine Tabelle / ein Modell hinzu und verursachte "bereits exists error". clear; python manage.py schemamigration --empty APPNAME MIGRATION_FILE_NAME
. Dies erzeugt eine "Deklaration" des Zustands der Modelle ohne Vorwärts / Rückwärts-Befehle. Seien Sie 100% sicher, dass der aktuelle Status der Modelle (Python-Dateien) und der Datenbank synchron ist !!! Diese aktuellste Migration wird für die Erstellung eines Differenzials verwendet, um korrekt zu migrieren (next). clear; python manage.py schemamigration APPNAME --auto
aus, um die wahre und die gewünschte Differenz zu erstellen (verwendet die soeben erstellte --empty
-Migration). Die neue Migration verfügt über Vorwärts- / Rückwärtsbefehle, die für Ihr neues Modell geeignet sein sollten. Rückblick ... clear; python manage.py migrate
Die gelernte Lektion ist, dass --auto
die letzte APP + Migrationsdatei betrachtet, um einen Vorwärts- / Rückwärtsvergleich zu erstellen. Wenn die letzte Migration im Wörterbuch NICHT ein Modell enthält, das Sie in DB haben, wird es erneut erstellt, was zu einem "bereits vorhanden" -Fehler führt. Stellen Sie sich das Wörterbuch als einen Vertrag zwischen Django und der DB vor: "Hier ist, wie alles aussehen soll". Die Migration kann Befehle enthalten, die doppelte Tabellen erstellen und nur während des Befehls '' migrieren '' angezeigt werden.
Die obigen Informationen sollten das Problem beheben. Präsentiert teilweise um Menschen zu helfen und auch für eine Überprüfung, falls ich etwas Dummes mache.
Tags und Links django django-south migrate