2016-07-16 61 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' –