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

Django迁移异常:Celery任务中出现已删字段不存在错误

问题分析与解决方案

核心原因

Celery Worker进程未重启,仍加载着旧版本的模型代码,导致查询时试图访问已删除的数据库列initial_credit_balance。

而Django Shell每次启动都会重新加载最新代码,这就是两者表现不一致的关键。

具体解决步骤

1. 重启Celery Worker容器

在Docker-compose环境下,直接重启Celery服务即可加载最新代码:

docker-compose restart celery

如果是通过docker-compose up启动的,也可以先停止再重新启动:

docker-compose stop celery
docker-compose up -d celery

2. 验证问题是否解决

重启后触发对应Celery任务,检查是否仍出现ProgrammingError报错。若问题依旧,可进一步排查:

  • 确认Celery容器挂载的代码卷是否为最新版本(避免Docker缓存旧代码)
  • 若代码是打包进镜像而非挂载卷,需重新构建Celery镜像:
    docker-compose build celery
    docker-compose up -d celery
    

3. 后续预防措施

后续代码更新(尤其是模型字段变更)后,必须同步重启Celery Worker——因为Celery Worker是长驻进程,不会像Django开发服务器那样自动重载代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 06:10:31