Django 丢失了迁移文件

时间:2021-07-08 05:35:08

标签: django postgresql django-migrations

我有一个 django 应用程序连接到 postgresql 数据库(在 AWS 上运行的 RDS 实例)

最近,我在我的数据库表中添加了新字段,但忘记在本地运行 makemigrations 并将代码推送到服务器。由于没有应用更改,服务器宕机,为了快速解决问题,我决定直接在应用程序的 docker 容器中运行 makemigrationsmigrate,我认为它会生成迁移文件,但是不幸的是,它没有。迁移是在数据库级别应用的,但没有更改的迁移文件。

在容器中运行 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 应用更改。

我不知道这到底是做什么的,我太害怕没有指导就去做,任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

当前的解决方案(不理想):

我在本地生成迁移文件,将其推送到 VCS,在远程服务器上,我不得不使用 python manage.py migrate <app_name> zero 取消应用程序的所有迁移(这导致应用程序中数据库表的数据丢失,因此请考虑在执行此操作之前两次)然后再次应用它们,但现在使用在第一步中生成的迁移文件。一切恢复正常,但显然有更好的解决方案