2016-07-16 6 views
1

Ich habe eine App mit 35 Migrationen, die eine Weile dauern (zum Beispiel vor Tests), also möchte ich sie zerquetschen.Verwenden einer neuen anfänglichen Migration zu Squash Migrationen

Der Befehl squashmigrations reduziert die Operationen von 99 auf 88, ist aber noch lange nicht optimal. Dies liegt wahrscheinlich an der Tatsache, dass ich mehrere RunPython Operationen habe, die verhindern, dass Django andere Operationen optimiert. All diese RunPython-Operationen sind bei der gedrückten Migration nutzlos, da die Datenbank leer ist. In Django 1.10 wird der Parameter elidable erlauben, sie in diesem Fall zu überspringen, aber trotzdem bleibt viel Unordnung.

Was hatte ich im Sinn für die zerquetschten Migration war näher an den ersten Migrationen Django erzeugt, daher meine Frage:

Ist es ratsam, eine neue anfängliche Migration als zerquetschte Version einer langen Liste von Migrationen zu benutzen? Wie würdest du das machen?

Antwort

1

Wenn Sie keine wichtigen Daten in Ihren Test- oder Produktionsdatenbanken haben, können Sie eine neue anfängliche Migration verwenden, und es wird eine geeignete Lösung sein.

Ich habe diesen Trick oft verwendet und es funktioniert für mich.

Ein paar Gedanken:

  • manchmal, müssen Sie zuerst Migrationen für einen Ihrer lokalen Anwendung erstellen und dann für den ganzen Rest;

  • um sicher zu sein, dass alles in Ordnung ist, können Sie Ihre Migrationen sichern und sichern Sie db, bevor Sie manage.py migrate mit leeren db ausführen.

HINWEIS: Ihre Tests zu beschleunigen, können Sie versuchen, in Gedächtnistests und/oder laufen Tests mit SQLite Wenn es möglich auszuführen.

+0

Danke! Wie generieren Sie die ursprüngliche Migration? Verschieben Sie alle aktuellen Migrationen in einen anderen Ordner? – pintoch

+1

Normalerweise entferne ich einfach die Migrationen von Ordnern unter jeder meiner lokalen Anwendungen. Generell verwende ich PostreSQL. Im einfachsten Fall führe ich dies aus: 'dropdb dbname && createdb dbname && rm -rf etwas_applikation/migrationen && python manage.py migrieren' –

Verwandte Themen