如何处理 Django 中未应用的迁移?

Posted

技术标签:

【中文标题】如何处理 Django 中未应用的迁移?【英文标题】:What to do with unapplied migrations in Django? 【发布时间】:2020-04-02 13:23:28 【问题描述】:

目前我已将我的 python 2 项目转换为 python 3 项目,之前我使用的是 Django 版本 1.9.13,现在我已将其更新为 2.2.6。

现在我可以在最新版本的 python 和 django 中运行我的项目,但是当我在 cmd 中运行我的项目时,我发现它显示像 You have 253 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s)... 这样的消息,所以我检查了我的迁移文件夹并能够找到所有迁移文件。

知道为什么我会在这里收到这样的消息,如果是错误,那么我应该怎么做才能摆脱这样的问题?

谢谢。

【问题讨论】:

...应用它们? 在新项目中,我已经在使用以前相同的数据库,所以如果我再次应用它们,这会影响我的数据库吗? 你确定你使用的是同一个数据库吗? Django 将迁移记录在数据库中,所以如果在之前应用它们时说它们未应用,那么您似乎正在使用不同的数据库。 是的,我确定我在这里使用的数据库与我在设置文件中放置的数据库相同。 你在使用 sqlite 吗?如果是这样,您是否复制了 db 文件? 【参考方案1】:

您需要将这些迁移迁移到您的数据库。这意味着您在模型类中进行了更改,但它们并未应用于您正在使用的数据库。迁移到数据库:在 CMD 中

python manage.py makemigrations
python manage.py migrate

在这两种情况下,确保你在你的 virtualenv 中(如果你有的话)并使用正确的 python。例如,在大多数情况下,如果您安装了多个 python(2 和 3);您可能必须在上述命令中使用“python3”。

【讨论】:

但我已经在使用旧数据库中使用的相同数据库,所以我认为所有迁移都已在数据库中应用,所以是否建议再次应用迁移? 你是说上次迁移后代码没有变化?

以上是关于如何处理 Django 中未应用的迁移?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理无效的先前有效的 Flyway 迁移

如何处理使用相同数据库的两个独立 laravel 项目的迁移?

使用 Envers 时如何处理 Flyway 迁移?

如何处理 MongoDB / Morphia 中的查询迁移?

您打算如何处理向 Python 3 的迁移?

将复杂项目从 Ant 迁移到 Maven - 如何处理不寻常的文件夹结构?