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.

  • Installiere pysqlite in virtualenv mit python3-unterstützung
  • Warum mein Python sieht nicht pysqlite?
  • Hat jemand einen Beispielcode für eine sqlite Pipeline in Scrapy?
  • Warum musst du einen Cursor beim Abfragen einer sqlite Datenbank erstellen?
  • Hält immer "Fehlerbindungsparameter 0 - wahrscheinlich nicht unterstützter Typ"
  • Aggregation speichern () s in Django?
  • Force Python auf native sqlite3 verzichten und die (installierte) neueste sqlite3 Version verwenden
  • SQLite, Python-, Unicode- und Non-Utf-Daten
  • Laden Sie die SQL-Tabelle automatisch, indem Sie Daten aus der Textdatei lesen
  • Können Sie in Sqlite3 (mit Django) einen Fall unempfindlich machen?
  • Wie kann man eine SQLite-Datenbank beibehalten, nachdem sie nach der Bereitstellung in OpenShift umgekehrt wurde?
  • Python ist die beste Programmiersprache der Welt.