Ich habe ein Django 1.8-Projekt gestartet, das das Migrationssystem verwendet.
Irgendwie wurde es auf dem Weg chaotisch, also habe ich die Migrationsordner und -tabellen aus der Datenbank gelöscht und jetzt versuche ich, sie ohne Erfolg zu rekonstruieren.
Ich habe drei Apps (3 models.py
Dateien) und die Modelle spiegeln die Tabellen genau wider!
Der beste Ansatz, den ich bisher gefunden habe, war:
- Löschen Sie alle
migrations
Ordner. Erledigt! - Löschen Sie alles aus der
django_migrations
Tabelle. Erledigt! - Führen Sie
python manage.py makemigrations --empty <app>
für jede App. Erledigt! - Ausführen
python manage.py migrate --fake
. Erledigt! (obwohl es nur funktioniert, wenn ich es nach jedemmakemigrations
Befehl ausführe .
Jetzt füge ich ein neues Feld hinzu, führe den makemigrations
Befehl aus und erhalte die folgende Fehlermeldung:
django.db.utils.OperationalError: (1054, "Unknown column 'accounts_plan.max_item_size' in 'field list'")
Ich habe STUNDEN auf dieses Ding gebrannt. Wie kann ich die Migrationen initialisieren, damit ich jedes Mal ohne Migrationsunterbrechungen weiterarbeiten kann?
Warum ist es so kompliziert? Warum gibt es keinen einfachen Einzeiler initiate_migrations_from_schema
?
EDIT:
Jetzt wird es noch schlimmer. Ich habe die django_migrations
Tabelle abgeschnitten und den gesamten migrations
Ordner gelöscht .
Jetzt versuche ich auszuführen python manage.py migrate --fake-initial
(etwas, das ich in den DEV-Dokumenten gefunden habe), nur damit alle 'internen' Apps von Django (Authentifizierung, Sitzung usw.) eingerichtet werden und ich bekomme :
(1054, "Unknown column 'name' in 'django_content_type'")
.
Diese "Spalte" ist keine echte Spalte. Es ist eine @property
in Djangos contenttypes
App definierte. WAS GEHT HIER VOR SICH? Warum wird die name
Eigenschaft als echte Spalte identifiziert ?