makemigrations 和升级到 Django 1.7 的问题

Posted

技术标签:

【中文标题】makemigrations 和升级到 Django 1.7 的问题【英文标题】:Issues with makemigrations and upgrading to Django 1.7 【发布时间】:2015-05-12 11:57:08 【问题描述】:

我的团队有一个项目在 Django 1.6 上与 South 一起运行,我们刚刚升级到 1.7。我按照指南,清除了旧的 South 迁移,运行 makemigrations 并迁移,最终让我的服务器运行,因此我将更改推送到我们的存储库。

现在,我团队中的第二位开发人员从 repo 中退出,升级到 1.7,并尝试运行 migrate(我从 makemigrations 进行的迁移在 repo 中,因此似乎不需要运行 makemigrations)。但是,每当他尝试迁移时(即使使用 --fake),他都会收到“尚未加载模型”。他如何在不删除我的所有迁移和运行 makemigrations 的情况下启动并运行他的环境?

此外,展望未来,在将代码推送到仍在 1.6 上的生产服务器之前,我们必须在 1.7 中进行新的架构迁移。基本上,我们需要升级到 1.7,然后立即应用新的架构更改。如果我们离开 South 并同时应用新的 1.7 迁移,会有什么问题吗? Django 会知道 South 最初应用的初始迁移与离开 South 后创建的新迁移之间的区别吗?

【问题讨论】:

【参考方案1】:

我们最终想出了如何让它发挥作用。

最初 makemigrations 中的许多“0002”迁移都失败了,因为表已经存在,所以我们不得不运行 migrate,伪造其中一个“0002”迁移,再次运行 migrate,并重复该过程直到它完成通过。这很痛苦,但它奏效了。

【讨论】:

以上是关于makemigrations 和升级到 Django 1.7 的问题的主要内容,如果未能解决你的问题,请参考以下文章

Django:添加整数字段后在应用程序上运行 makemigrations 时出现“未知列”

django.db.utils.ProgrammingError尝试从github克隆的app上的manage.py makemigrations

未检测到针对 makemigrations 的更改

升级到 1.8 后进行迁移时出现 DjangoUnicodeDecodeError

migrate 和makemigrations的差别

makemigrations 显示未检测到更改