Django中POST/GET正常,但dumpdata/loaddata报“no such column: creator”
Django dumpdata/loaddata 报"no such column: creator"但API正常的排查方案
这问题核心是dumpdata/loaddata依赖模型的静态定义+缓存,而API请求直接基于数据库实际结构+运行时模型状态,以下是几个大概率的原因和解决办法:
- 模型缓存没更新:Django会缓存模型结构,如果你最近新增了
creator字段但没重启服务,本地执行dumpdata时可能还读取着旧的模型定义。试试重启你的Django进程,或者用python manage.py clearcache(Django 4.2及以上版本支持)清掉缓存。 - 执行命令时用错了数据库:别想当然认为和API用的是同一个库——比如API连接的是测试服务器的数据库,你本地跑
dumpdata时用的是本地SQLite,而本地库没执行最新迁移。检查settings.py里的DATABASES配置,或者跑python manage.py inspectdb对比当前数据库的表结构和模型是否匹配。 - 迁移没完全同步:你手动检查了迁移文件不代表所有环境的数据库都执行了这些迁移。跑
python manage.py migrate --check看看有没有未应用的迁移,或者直接重新执行python manage.py migrate强制同步一遍。 - 模型用了动态字段:如果
creator是通过运行时代码(比如信号、动态模型修改)加上的,不是直接写在模型类里的,dumpdata读取静态模型定义时就找不到它。这种情况必须把字段静态定义在模型里,别用动态添加的方式。 - dumpdata命令指定错了对象:比如你执行
dumpdata时写的是myapp.OldModel,但实际带creator的是myapp.NewModel,或者指定的应用名不对,自然会找不到字段。仔细核对命令里的应用名和模型名。 - 数据库路由搞的鬼:如果项目用了数据库路由,
dumpdata可能没走API用的那条路由,查询了另一个没有creator字段的库。检查路由类的db_for_read方法,确保为目标模型返回了正确的数据库别名。
内容的提问来源于stack exchange,提问作者IAmVerySmart
相关产品推荐
相关产品推荐

