2016-04-03 13 views
0

Ich habe ein wenig ungewöhnlich Migration in meiner django Website zu tun:Confused Migration in django

Ich brauche eine Datenbank mit älteren Konfigurationen wiederherzustellen, weil die alte Website noch funktioniert und ich brauche es Daten ist.

Wenn ich den Wiederherstellungsprozess beende, wie werde ich es migrieren? Kann ich eine ältere Migration erneut durchführen und die neuen später erstellen? Oder kann das Django-Migrations-System die aktuelle Datenbankkonfiguration erkennen und neue Migrationen vorschlagen?

Es kann eine einfache Migration (oder nicht), aber ich muss sicher sein, was ich vor tue.

Entschuldigung für mein schlechtes Englisch.Ich schätze jede Hilfe.

+0

Wurde die alte Datenbank auch mit Django erstellt und ähnelt einfach einem früheren Status mit einigen neueren Migrationen? – Tim

+0

Ja, die Datenbank wird in der alten Website mit einem früheren Status verwendet. Es ist eigentlich das gleiche Django-Projekt. Aber das ältere ist auch mit einer älteren Version von Code. –

+0

Dann sollten Sie in der Lage sein, die Datenbank mit den von Ihnen erstellten Migrationen einfach zu migrieren. Der Status der Migrationen wird in der Datenbank gespeichert, so dass der Rest der Daten wiederhergestellt wird. Testen Sie es zunächst in einer Testumgebung, um keine Daten zu verlieren. – Tim

Antwort

-1

Sie können durch Prozess gehen:

1.First aller erstellen Sie eine neue Datenbank mit namesay-> NewProduction.

  1. Löschen Sie nun alle Migrationsdateien aus den Apps, die Sie löschen möchten.
  2. Führen Sie python manage.py showmigrations aus, um zu sehen, welche Migrationen dort vorhanden, aber nicht migriert wurden.
  3. Starten Sie den Befehl migrieren, beginnend mit auth, Websites, Sitzung und dann Ihre Apps nacheinander.
  4. Nehmen Sie den Speicherauszug Ihrer vorherigen Datenbank, aber Tabelle weise .. Machen Sie einen Dump der Tabelle einmal zu einer Zeit, von der Sie sicher sind, und drücken Sie es auf NewProduction.
  5. Dieser obige Schritt behält Ihre Tabelle django_content_type, django_sessions usw. unverändert bei.
  6. Ändern Sie alle content_type_values ​​in der aktualisierten Tabelle, suchen Sie in der Tabelle djang_content_type für jede App und aktualisieren Sie sie entsprechend.

Dies ist die richtige Lösung, die ich für meine Projektmigrationen gemacht habe.