繁体   English   中英

在Django中恢复迁移的具体目的是什么,并且没有它可以安全地工作吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM