django - Django 丢失了迁移文件
问题描述
我有一个连接到 postgresql 数据库的 django 应用程序(在 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
.
我不知道这到底是做什么的,我太害怕在没有指导的情况下这样做,任何帮助将不胜感激
解决方案
当前解决方案(不理想):
我在本地生成了迁移文件,将其推送到 VCS,在远程服务器上,我不得不取消应用应用程序的所有迁移python manage.py migrate <app_name> zero
(这导致应用程序中的数据库表数据丢失,因此在执行此操作之前请三思而后行)然后应用再次使用它们,但现在使用第一步中生成的迁移文件。一切恢复正常,但显然有更好的解决方案
推荐阅读
- python - FFMPEG - 本地视频到 UDP 流到 OpenCV - 视频质量下降
- javascript - 为什么 npm 开始给出 ELIFECYCLE 错误 reactjs
- c# - 将protobuf双维重复值转换为数组的有效方法
- php - CSRF Tokens Laravel Sanctum 末尾的奇怪 URL 编码字符
- telegram - IPv6 Telegram setWebhook 收到“保留”消息
- python - Python 7 步猜数
- r - dplyr::left_join() 产生意外错误
- android - Flutter中如何使用id3插件
- grpc - GRPC 异常 sendHeaders 已被调用
- docker - Portainer - 如何让运行选项正常工作