首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Django-CMS 2.4.3迁移到Django-CMS 3.1.1

将Django-CMS 2.4.3迁移到Django-CMS 3.1.1
EN

Stack Overflow用户
提问于 2015-10-17 20:51:31
回答 1查看 494关注 0票数 1

我在生产中运行了几个django-cms 2.4.3 (django 1.5.5)应用程序。我正在升级到django-cms 3.1.1 (Django 1.8/python2.7)。我可以在没有问题的情况下启动测试环境并运行。然而,导入我现有的数据一直是问题所在。我试过:

  1. 生产服务器上的‘'python manage.py dumpdata > dump.json’。
  2. 开发服务器上的‘'python manage.py loaddata -ignorenonexistent dump.json’。

结果是一系列表已经存在,违反了空约束,列不存在,等等。

然后,我尝试直接从postgresql导出(作为备份)并还原到开发安装中。运行python manage.py迁移。得到一系列类似于上面的附加错误。运行和迁移一起迁移--假的-初始的和-假的。问题是,许多页面(让我们以cms_page为例)已经将3.x中的字段从2.4中更改了。迁移只会查看迁移中的变化,表中的差异。一些字段被添加,一些字段被丢弃。我查看了cms_page迁移0001文件。它创建带有额外列的页表。迁移0003增加了更多的字段,并删除了一些字段。名单还在不停地写着。

我花了三天的时间试图迁移我现有的数据。我甚至从django-cms 3.0开始,把一些插件自动升级到3.1 (不,我不包括pip安装升级)。非常令人沮丧。

我甚至开始手动更新数据库表。表约束使得这几乎是不可能的。现在,我将彻底重写django-cms迁移。有什么东西是我忽略的,会使数据迁移更容易吗?也许继续使用django-cms 2.4并将django升级到受支持的版本?

EN

回答 1

Stack Overflow用户

发布于 2015-10-19 08:38:01

除非我误解了你的所作所为,否则我不认为你这样做是正确的。

您不应该在迁移方面遇到问题;迁移的目的是为了使您所做的事情(跨数据库更改进行升级)更容易。

如果您发现自己手动操作数据库表,则做错了,使事情变得非常困难。

什么应该起作用:

( 1)复制现有的2.4.3站点代码、数据库和所有内容。如果它能工作的话,不要在生产网站上触摸任何东西。从现在开始,只在副本上工作。

2)确保移民确实是最新的。从你的描述听起来,也许他们不是。

对于迁移目录中的每一次迁移,您应该在数据库中的迁移表中有一个条目。如果不是,但您确信您的数据库与模型代码是最新的,您可以运行migrate --fake来将这些迁移标记为运行。

(如果您使用syncdb创建数据库,并且没有使用--fake进行迁移以将表标记为最新的表,您可能会发现自己处于这个位置,我怀疑这可能是问题的根源。)

如果你在迁移表中有一些是最新的,而另一些则不是和不准确的记录是最新的,祝你好运;你将陷入混乱,你将不得不小心地选择你的出路。

( 3)一旦您的代码、数据库表和迁移历史都是从同一页中唱出来的,并且彼此一致,就再拿一份代码和数据库进行工作,这样您至少有一个安全的地方可以返回。

4)现在开始升级软件,一次尽可能地升级一个组件,并运行迁移。使用django CMS发行说明帮助您了解正在更改的内容、需要更改的其他内容以及需要采取的任何其他步骤。

在每个组件被迁移后检查是否一切正常。

5)您也需要升级Django;在继续下一个Django CMS更新之前,请使用发布说明来确定何时必须升级django。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33191448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档