如何保证Django模型和底层数据库的一致性

问题描述 投票:0回答:1

在我们的登台服务器上,我们观察到一个运行时错误,指出数据库中缺少一个字段,

column our_table.our_field does not exist
LINE 1: ...d"."type", "our_table"...

该字段是在最近的更新中添加的,具有复杂的迁移压缩过程。在此过程中可能会出现一些错误,但“manage.py showmigrations”命令显示已应用迁移并且“manage.py makemigrations”不会创建任何新迁移。由于我们不在暂存或生产数据库上运行测试,因此我们正在尝试找出识别此类错误的最有效方法。

简而言之,我们如何识别数据库和 Django 模型之间由如下错误迁移引起的不匹配?

python manage.py migrate our_app --fake

我想我正在寻找类似的东西

python manage.py check_database

编辑:非常感谢您的建议。但是,这更像是一个部署问题,而不是开发问题,因为当我们的 devops 试图在临时服务器上保留数据(这将是生产环境)时尝试应用压缩的迁移时,问题可能会发生。当

makemigrations
showmigrations
没有显示任何问题并且因此也可能发生在生产中时,得知这种不一致会发生是可怕的。

底线是我们需要一些方法来确保我们的数据库在部署后与我们的模型匹配。

django django-models django-migrations
1个回答
0
投票

我将问题发布到 django-extensions 问题跟踪器 并且被告知django-extensions提供的

sqldiff
命令是我正在寻找的命令。

© www.soinside.com 2019 - 2024. All rights reserved.