重置长时间的 Django 迁移

Posted

技术标签:

【中文标题】重置长时间的 Django 迁移【英文标题】:Reset long Django migrations 【发布时间】:2016-11-11 04:30:28 【问题描述】:

随着项目的发展,迁移(makemigrationsmigrate) 都需要越来越长的时间,每次部署都会延迟很多。 Django 让您转到squash them,因此您没有很长的迁移文件列表,但迁移需要相同的时间。

然后我尝试了以下方法:

    删除我的应用中的所有迁移文件 清理数据库中的django_migrations表 运行makemigrations(为我的应用创建0001_initial) 运行migrate --fake(以填充到django_migrations 表)

现在新的迁移速度非常快,但代价是丢失了迁移历史。

所以我的问题是,考虑到这可能类似于 v1.0,并且它是任何其他项目都依赖的独立项目,这样做有什么风险?

我觉得这是不应该做的事情,因为我找不到任何特定的 Django 命令来做这件事。 South 已重置,但现在 django 迁移只有壁球...

【问题讨论】:

如果您不真正关心向后迁移,这将不是问题。 【参考方案1】:

只要在您删除迁移时所有您的安装都是最新的,删除旧迁移并没有什么坏处。唯一的缺点是一旦删除它们就不能轻易回到数据库的历史状态,但除了旧的备份文件,你不应该使用它。

正如我所指出的,只要确保使用您项目的每个人之前都是最新的(或者在删除之前给他们指示,以便他们可以在升级到 HEAD 之前进行迁移,如果您使用的是源版本控制) .

如果您正在开发第三方应用程序,这将使安装更加复杂(无论您是升级还是安装,都需要处理 --fake 参数...),但这不是您的情况。

【讨论】:

以上是关于重置长时间的 Django 迁移的主要内容,如果未能解决你的问题,请参考以下文章

在将项目部署到服务器之前重置所有迁移是一种好习惯吗?

模型中的 Django default=datetime.now() 在 uwsgi 重置后总是保存相同的日期时间

超时后按下提交按钮时websocket页面重置

在 Android 上测量长时间的运行时间(重新启动)

Laravel:在迁移之前删除迁移:重置

由于迁移错误而尝试重置我的数据库,甚至无法在没有 SQLException 的情况下重置