2016-10-27 7 views
0

Ich versuche, eine Django-App lokal in einer neuen Maschine einzurichten, aber Migrationen scheinen völlig kaputt zu sein. Sie müssen in einer bestimmten Reihenfolge ausgeführt werden, die in der ersten Maschine funktionierte, die ich vor ein paar Monaten eingerichtet habe, aber jetzt gibt es Inkonsistenzen (obwohl ich ziemlich sicher bin, dass keine neuen Migrationen generiert wurden).Django: unterbrochene Migrationen

Also die einzige Lösung, die ich mir vorstellen kann, ist den Export der Datenbank von der alten Maschine, wo es funktioniert, zu der neuen. Funktioniert das?

Dies würde das Problem mit der unterbrochenen Migration nicht lösen, aber zumindest kann ich an dem Code arbeiten, bis es eine richtige Lösung gibt.

+0

Haben Sie 'makemigrations' versucht? Wenn Sie Modelle ändern, müssen Sie zuerst die Migrationspaketdatei in der App hinzufügen. Um dies automatisch zu tun, müssen Sie 'python manage.py makemigrations' verwenden. – iraycd

+2

Sind Sie sicher, dass beide Installationen auf denselben Django-Versionen ausgeführt werden? 1.4 ist alt und verwendet immer noch Süden, während Django> = 1.7 ein eigenes Migrationssystem (den Ersatz von Süd) mitbringt. – Risadinha

+0

Ja, das alte verwendet 1,4 und es verwendet South Migrations. – dabadaba

Antwort

0

Die Beantwortung dieser Frage:

So ist die einzige Lösung, die ich denken kann, ist die Datenbank von der alten Maschine exportieren, wo es auf die neue arbeitet. Funktioniert das?

Ja, das kann funktionieren, wenn Sie sicher sind, dass Ihre Datenbank mit Ihren Modellen synchronisiert ist. Es ist eigentlich der Weg zu gehen, wenn Sie am besten vorbereitet sein, Ihre Produktionsumgebung zu aktualisieren.

  1. erhalten einen Dump von der aktuellen Produktionsmaschine
  2. eine neue Datenbank erstellen und der Dump
  3. Test laden, ob es Unterschiede zwischen den Modellen und der Migrationsgeschichte (dies ist zuverlässiger mit den neuen Migrationen Django , Süden war ein externes Werkzeug und hatte nicht alle Möglichkeiten) (zB ./manage.py showmigrations (1.10), ./manage.py migrate --list (1.7-1.9 und Süden)
  4. Wenn Sie sicher sind, dass keine Migrationen ausgeführt werden müssen, aber die Auflistung Unterschiede zeigt, dann tun : ./manage.py migrate --fake

Hinweis, in neueren Versionen können Sie ./manage.py migrate tun, und es wird gemeldet, dass alles in Ordnung ist, wenn die Modelle und die Migrationen synchron sind. Dies kann vor der Bereitstellung in der Produktion eine Plausibilitätsprüfung sein.

Verwandte Themen