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

Docker环境下Django切换PostgreSQL遇ProgrammingError:列不存在

解决方案

问题核心

数据库中human_requirementschat表的结构未与当前模型同步,且本地删除迁移文件后,数据库内的迁移记录仍残留,导致新迁移无法正确执行。

具体操作步骤

  1. 清理数据库内的旧迁移记录
    进入PostgreSQL容器,删除human应用的迁移记录:

    docker-compose exec db psql -U postgres -d postgres -c "DELETE FROM django_migrations WHERE app='human';"
    
  2. 删除数据库中已存在的旧表
    直接删除human应用对应的两张数据表(避免旧表结构干扰):

    docker-compose exec db psql -U postgres -d postgres -c "DROP TABLE IF EXISTS human_requirementschat; DROP TABLE IF EXISTS human_uploadedfile;"
    
  3. 重新生成并执行迁移

    # 生成human应用的迁移文件
    docker-compose exec web python manage.py makemigrations human
    # 执行迁移
    docker-compose exec web python manage.py migrate human
    

额外检查点

  • 确认Docker容器是否挂载了本地代码目录:如果是通过镜像打包代码,需重新构建镜像并重启容器:
    docker-compose build web
    docker-compose up -d
    
  • 快速验证models.py中的alias字段确实存在(你的代码中已包含该字段,此步可快速排除代码同步问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:40:08