【发布时间】:2011-06-09 03:52:22
【问题描述】:
让我感到困惑。假设我们有一个带有 South 迁移的 Django 项目。目前,生产项目版本为A,开发中版本为B。现在让我们假设版本B 已安装到生产环境中:
- 安装新代码
- 运行
./manage.py syncdb && ./manage.py migrate - 重启网络服务器,开心就好。
下一个假设:版本B 根本不起作用。它在开发中进行了,但在生产中没有,因此必须回滚。这就是我必须遗漏的地方。我看到了两种可能性:
- 重新安装旧代码。现在,向南回迁移是合适的,但是,这是不可能的,因为旧代码不包含回退所需的所有最新迁移。
- 我们首先回滚数据库更改,然后重新安装旧代码。但是,我们如何知道版本
A的最新迁移?由于一个项目可以轻松数出几十个应用程序,因此您需要为每个应用程序找出哪个迁移站属于旧版本,然后分别迁移每个应用程序,然后回滚代码并希望获得最好的结果。
在这两种情况下,我都缺少关键信息,第一种情况下的迁移代码或第二种情况下的“迁移<->版本”关系。我在这里错过了什么?
PS:是的,我知道我可以从备份中恢复数据库,这就是我实际所做的。我想知道整个数据库迁移理论如何适应回滚。
【问题讨论】:
标签: database django rollback django-south