2014-07-25 10 views
7

Wir verwenden den Süden, um Migrationen für eine lange Zeit zu verwalten, und jetzt haben wir über 100 Migrationen.Wie mehrere Django South-Migrationen in eine Migration zusammengeführt werden

Es verursachte eine lange Zeit, python manage.py migrate auf einem frischen DB laufen zu lassen.

Ich bin Wunder, dass ob ich alle bestehenden Migrationen auf eine einzige Migration zusammenführen kann

+2

Mögliche Duplikat [Konsolidieren Django Süd Migrations] (http: // Stackoverflow. com/questions/14241648/consolidating-django-south-migrations) –

Antwort

4

Sie den Befehl squashmigrations Managements verwenden können dorthin zu gelangen. Es behält die alten Migrationsdateien bei und verwendet die komprimierte Version, wenn Sie etwas Neues installieren.

Beispiel:

./manage.py squashmigrations core 0003_auto 

Siehe official docs

Wenn Sie den Versuch und Irrtum aller Abfälle bei der Entwicklung produziert bekommen freuen zu befreien sowie die Migration von Ihrer Apps migrations Verzeichnis entfernen mit allen Erwähnungen Ihrer App in der SQL-Tabelle django_migrations und die Apps tatsächlichen Datenbanktabellen.

Danach ./manage.py makemigrations laufen und du bist gut los. Dies wird nicht für Apps empfohlen, die bereits produktiv genutzt werden.

+0

Was macht das Ändern der Datenbank selbst (wie in "... zusammen mit allen Erwähnungen Ihrer App in der SQL-Tabelle django_migrations")? Während der Entwicklung habe ich 'Makemigrations' ausgeführt, um etwas zu testen, habe eine kleine Änderung an einem Feld vorgenommen und dann wieder ausgeführt. Natürlich endete ich mit zwei Migrationen, die für einen Repository-Commit eklatant erschienen. Das Entfernen der beiden Dateien und das Ausführen von 'Makemigrations' (ohne irgendwelche Datenbank-Erwähnungen zu bereinigen) schien das Problem zu beheben. Oder könnte ich etwas Subtiles durcheinander gebracht haben? – natevw

Verwandte Themen