Django migrieren Schema von sqlite zu postgresql

Ich entwickle ein großes Django-Projekt. Auf meinem Laptop verwende ich SQLite3 als Datenbank. Ich habe viele Migrationen für meine Modelle erstellt. Alles scheint zu funktionieren

Dann möchte ich PostgreSQL auf dem Produktionsserver verwenden. Ich habe eine leere Datenbank vorbereitet und versucht, manage.py syncdb . Und plötzlich bekomme ich einen Fehler wegen nicht vorhandener Beziehung.

 Operations to perform: Synchronize unmigrated apps: suit, messages, humanize, imagekit, staticfiles, crispy_forms, storages, django_extensions, localflavor, registration Apply all migrations: [here list of my apps], sites, user_auth, sessions, auth Synchronizing apps without migrations: Creating tables... Creating table registration_registrationprofile Running deferred SQL... Traceback (most recent call last): File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 62, in execute return self.cursor.execute(sql) psycopg2.ProgrammingError: relation "user_auth_account" does not exist 

Ich versuche, meine sqlite Datenbank zu syncdb und syncdb mit dem neuen sqlite auszuführen: es schafft das Schema ohne Probleme.

Hier habe ich erkannt, dass SQLite keine Fremdschlüssel-Beziehungen verwendet und einfach integer Typen für alle Referenzen verwendet. So funktioniert es für sqlite. Sehr schlau, Django. Aber alle meine Modelle sind von einander abhängig. Und ich möchte verschiedene Datenbanken verwenden.

Jetzt habe ich eine Reihe von Migrationen, die nur an SQLite arbeiten.

Ich verstehe, dass es möglich ist, Migrationen einzeln für jede Anwendung auszuführen, wo das Modell zuerst erstellt wird. Aber es wäre eine Hölle.

Ist es möglich, Abhängigkeiten zu erkennen und diese Migrationen in der richtigen Reihenfolge auszuführen?

One Solution collect form web for “Django migrieren Schema von sqlite zu postgresql”

Django behandelt Abhängigkeiten zwischen Modellen in Migrationen korrekt. Was es nicht verarbeiten kann und was es ausdrücklich in den docs warnt, ist unmigrierte Apps mit Abhängigkeiten von migrierten Apps:

Seien Sie sich jedoch bewusst, dass unmigrierte Apps nicht von migrierten Apps abhängen können, weil es keine Migrationen gibt. Dies bedeutet, dass es im Allgemeinen nicht möglich ist, eine unmigrierte App zu haben, eine ForeignKey oder ManyToManyField zu einer migrierten App zu haben. Einige Fälle können funktionieren, aber es wird schließlich scheitern.

Warnung

Auch wenn es darum geht, mit unmigrierten Apps zu arbeiten, abhängig von migrierten Apps, Django darf nicht alle notwendigen Fremdschlüssel-Einschränkungen generieren!

In diesem konkreten Fall scheint, dass die registration eine Abhängigkeit vom Benutzermodell hat. Sie müssen diese App auf eine Version aktualisieren, die über die erforderlichen Migrationsdateien verfügt, um Django 1.7+ zu unterstützen.

  • Einfachste Weg, um SQLite-Abfrage zu wiederholen, wenn DB gesperrt ist?
  • Wie kann ich das sqlite3 Modul in Python 2.4 importieren?
  • Python, Sqlite3 - Wie konvertiert man eine Liste in eine BLOB-Zelle
  • Zusammenführen aller SQLite-Datenbanken mit verschiedenen Tabellen
  • Django: plötzliche DB zurücksetzen nach Heroku schlafen
  • Hält immer "Fehlerbindungsparameter 0 - wahrscheinlich nicht unterstützter Typ"
  • Sqlite3.OperationalError: nahe "?": Syntaxfehler
  • Kann SQLite nicht mit Python 2.6 importieren
  • Python SQLite - Wie man manuell BEGINNEN und END-Transaktionen?
  • Wie kann ich verhindern, dass sqlite einen String als Mathe-Ausdruck auswertet?
  • Verwenden von Alembic API aus dem Anwendungscode
  • Python ist die beste Programmiersprache der Welt.