我有一个 django 应用程序连接到 postgresql 数据库(在 AWS 上运行的 RDS 实例)
最近,我在我的数据库表中添加了新字段,但忘记在本地运行 makemigrations
并将代码推送到服务器。由于没有应用更改,服务器宕机,为了快速解决问题,我决定直接在应用程序的 docker 容器中运行 makemigrations
和 migrate
,我认为它会生成迁移文件,但是不幸的是,它没有。迁移是在数据库级别应用的,但没有更改的迁移文件。
在容器中运行 python manage.py showmigrations
时,输出:
redirect
[X] 0001_initial
[X] 0002_redirect_clicks
[X] 0003_redirect_name
但在数据库中,运行 SELECT * FROM django_migrations;
表明还有一次迁移:
103 | redirect | 0004_auto_20210707_2039 | 2021-07-07 14:39:19.058233+00
你有什么建议?我想在本地运行 makemigrations
,生成文件并将其推送到 vcs,然后在服务器上使用 migrate --fake
应用更改。
我不知道这到底是做什么的,我太害怕没有指导就去做,任何帮助将不胜感激
答案 0 :(得分:0)
当前的解决方案(不理想):
我在本地生成迁移文件,将其推送到 VCS,在远程服务器上,我不得不使用 python manage.py migrate <app_name> zero
取消应用程序的所有迁移(这导致应用程序中数据库表的数据丢失,因此请考虑在执行此操作之前两次)然后再次应用它们,但现在使用在第一步中生成的迁移文件。一切恢复正常,但显然有更好的解决方案