[英]What is the concrete purpose of reverting migrations in Django, and is it safe to work without?
在我们的Django项目中,我们通常已经实现了reverse_func
,以便能够回滚迁移。
class Migration(migrations.Migration):
dependencies = []
operations = [
migrations.RunPython(forwards_func, reverse_func),
]
我们这样做是因为一些团队成员在以前的项目中做到了这一点,但是我们从未真正质疑过这样做的必要性。
但是,随着时间的流逝,似乎我们从未使用过回滚机制。
我们的数据库是一个Docker容器的卷。 当我们打开一个不同的分支时,通常会将卷替换为先前的dev
版本,以便仅重新应用最新的迁移。
因此,我的问题是: 我们是否误解了reverse_func
的目的 ? -开发人员的目的是什么? -产品的目的是什么?
没有他们,工作安全吗?
在开发环境中, reverse_func
不是很重要,如果出现问题,您可以删除整个数据库,然后重新创建它
但是对于生产环境,它将在有问题的版本发布后帮助您将数据库恢复到工作状态
在生产环境中运行forwards_func
,您可能会更改数据库,并可能发现这是一个错误的更改,并且您的站点无法正常运行。 请注意,您的数据库中可能会有一些新数据,因此,如果您使用备份,则可能会丢失这些数据
在给定情况下,具有reverse_func
可能会非常有帮助,您的reverse_func
将使db返回到先前的工作状态,您只需重新部署软件的先前版本即可
请注意,有时候reverse_func
可以是一个空函数。 只是告诉django这种迁移是可逆的
您并不总是使用reverse_func
但是如果出现问题(甚至每年一次),您可以看到编写它的重要性
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.