Django 1.8: Erste Migrationen für vorhandenes Schema erstellen
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 versuche nun, sie zu rekonstruieren, ohne Erfolg.
Ich habe drei Apps (3models.py
files) und die Modelle spiegeln die Tabellen GENAU wider!
Der beste Ansatz, den ich bisher gefunden habe, war:
Alles löschenmigrations
Ordner. ErledigtLösche alles aus demdjango_migrations
Tabelle. ErledigtLaufpython manage.py makemigrations --empty <app>
für jede App. ErledigtLaufpython manage.py migrate --fake
. Erledigt! (obwohl es nur funktioniert, wenn ich es nach jedem @ ausführmakemigrations
BefehlNun füge ich ein neues Feld hinzu, starte dasmakemigrations
Befehl, und ich 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
?
BEARBEITEN
Nun wird es noch schlimmer. Ich habe das @ abgeschnittdjango_migrations
Tabelle und löschte allemigrations
Mappe
Jetzt versuche ich zu rennenpython manage.py migrate --fake-initial
(etwas, das ich in den DEV-Dokumenten gefunden habe), nur damit alle 'internen' Apps von Django (Auth, Session usw.) eingerichtet werden und ich erhalte:(1054, "Unknown column 'name' in 'django_content_type'")
.
Now, diese "Spalte" ist keine echte Spalte. Es ist ein@property
in Django's @ definiecontenttypes
App. WAS GEHT HIER VOR SICH? Warum identifiziert es dasname
Eigenschaft als echte Spalte?