You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将生产服务器代码推送到GitLab后,Django应用遇PostgreSQL迁移问题

Django应用宕机问题分步解决

一、先排查Python环境一致性问题

最初的No module named 'psycopg2'错误,大概率是WSGI服务器使用的Python环境与你执行pip3 install的环境不一致:

  • 检查生产服务器是否使用了虚拟环境,若有,需激活虚拟环境后重新安装依赖:
    # 假设虚拟环境目录为venv
    source venv/bin/activate
    pip install psycopg2
    
  • 重启WSGI服务(如uWSGI、Gunicorn或Apache),确保新安装的依赖被加载。

二、解决迁移历史不一致问题

InconsistentMigrationHistory错误是核心问题,说明admin应用的初始迁移早于你的app应用初始迁移被应用,打破了依赖顺序:

步骤1:备份数据库(必须操作)

先备份生产数据库,避免数据丢失:

# PostgreSQL示例
pg_dump -U 用户名 数据库名 > backup.sql

或用Django自带的备份工具:

python3 manage.py dumpdata --exclude auth.permission --exclude contenttypes > backup.json

步骤2:修正迁移记录

进入Django数据库shell:

python3 manage.py dbshell

执行SQL删除admin应用的迁移记录:

DELETE FROM django_migrations WHERE app = 'admin';

退出数据库shell:

\q

步骤3:重新应用迁移

先fakeadmin的初始迁移(避免重复创建已有表),再应用app的迁移:

python3 manage.py migrate --fake admin 0001_initial
python3 manage.py migrate app

若你的app有后续迁移,直接执行全局迁移即可:

python3 manage.py migrate

三、验证页面访问量中间件功能

迁移完成后,检查app_pageview表是否存在:

python3 manage.py dbshell
\dt

确认表存在后,重启WSGI服务,测试网站是否恢复正常。

四、避免后续问题的建议

  • 生产环境代码应通过Git拉取部署,而非直接在服务器上初始化Git仓库后上传,避免操作过程中误改配置。
  • 统一使用虚拟环境管理依赖,确保WSGI服务与命令行使用的Python环境一致。
  • 每次部署前,在测试环境验证迁移逻辑,避免直接在生产环境执行未验证的迁移操作。

内容的提问来源于stack exchange,提问作者carbontracking

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:52:48