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

IBM云部署Odoo 12时ir_attachment报错导致UI无法加载问题求助

故障根因

这个报错是Odoo的ir_attachment表中ID为673的记录对应的物理存储文件丢失导致的。Bitnami打包的Odoo 12默认将附件存储在/opt/bitnami/odoo/data/filestore/路径下,数据库存在该附件的关联记录但磁盘上找不到对应哈希命名的文件,访问时抛出文件未找到异常,进而阻塞整个UI渲染。

修复步骤
  • 第一步:进入运行中的Odoo Pod,启动Odoo Shell
# 替换为实际的Odoo Pod名称
kubectl exec -it <odoo-pod-name> -- bash
# 启动Odoo Shell,指定你的业务数据库名,此处报错对应的数据库为openg2p
odoo shell -d openg2p
  • 第二步:定位缺失的附件基础信息,确认可修复方式
    在Odoo Shell中执行以下代码,先查看缺失附件的关联信息:
# 定位ID为673的附件记录
bad_attach = env['ir.attachment'].browse(673)
# 打印附件关联信息,确认用途
print(f"附件名称:{bad_attach.name}")
print(f"关联业务模型:{bad_attach.res_model}")
print(f"关联业务记录ID:{bad_attach.res_id}")
print(f"存储路径:{bad_attach.store_fname}")
  • 第三步:根据附件类型选择修复方案
    1. 如果该附件为用户上传的非核心资源(头像、业务文档等):无需删除记录,直接清空附件内容即可避免外键冲突:
    bad_attach.write({'datas': False})
    # 若有备份的原文件,也可以替换为备份文件内容
    # import base64
    # with open('/path/to/backup/file', 'rb') as f:
    #     bad_attach.write({'datas': base64.b64encode(f.read())})
    
    1. 如果该附件为系统模块依赖的核心静态资源:直接升级对应关联的模块即可自动恢复缺失的资源文件:
    # 退出Odoo Shell后执行,替换为实际关联的模块名,比如web、auth_signup等
    odoo -d openg2p -u <关联模块名> --stop-after-init
    
  • 第四步:提交变更并重启服务
    在Odoo Shell中执行提交操作:
env.cr.commit()

退出Shell后重启Odoo Deployment生效:

# 替换为实际的Odoo Deployment名称
kubectl rollout restart deployment <odoo-deployment-name>
  • 后续排查建议:检查IBM云环境中Odoo对应的持久化卷配置,确认filestore目录挂载的PVC是否正常,排除存储卷意外卸载、数据同步失败导致的文件丢失问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:45:03