2016-07-16 79 views
1

我有35遷移這需要一段時間才能運行(例如測試之前)的應用程序,所以我想壓制它們。使用新鮮的初始遷移壁球遷移

squashmigrations命令降低了操作99至88,但它仍然是遠非最佳。這可能是由於我有多個RunPython操作阻止Django優化其他操作。由於數據庫爲空,所有這些RunPython操作在壓扁的遷移中都是無用的。在Django 1.10 elidable參數將允許跳過他們在這種情況下,不過,有很多雜亂的保持。

我有什麼在腦海壓扁遷移更接近最初的遷移Django的產生,因此,我的問題:

是否建議使用新鮮的初始遷移的遷移一長串的壓扁的版本?你會怎麼做?

回答

1

如果你沒有在測試或生產數據庫的任何重要的數據你可以用新鮮的初始遷移,這將是合適的解決方案。

我用這一招了很多次,它爲我工作。

的一點想法:

  • 有時,首先你需要爲你的本地應用程序的一個創建遷移,然後將所有的休息;

  • 爲確保一切正常,您可以提交您的遷移並備份您的db,然後您將使用空數據庫運行manage.py migrate

注:加快你的測試,你可以嘗試在內存測試和/或運行測試使用SQLite如果可能的運行。

+0

謝謝!你如何產生初始遷移?你將所有當前的遷移移到不同的文件夾嗎? – pintoch

+1

通常,我只是在每個本地應用程序下刪除文件夾的「遷移」。一般我使用PostreSQL。因此,在最簡單的情況下,我運行這個命令:'DROPDB DBNAME && CREATEDB DBNAME &&室射頻some_application /遷移&&蟒蛇manage.py migrate' –