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

Docker部署Odoo开发实例时filestore缺失问题求助

问题描述

在Docker容器中搭建新的Odoo开发实例,使用外部生产实例的数据完成数据库迁移后,启动时出现附件文件找不到的错误。

已执行的数据库迁移步骤:

sudo docker cp dump.sql db_docker_name:/dump.sql  

sudo docker exec -it --user postgres db_docker_name /bin/bash 

psql database_name < dump.sql  

ALTER DATABASE database_name OWNER TO odoo; 

sudo docker exec docker_name pip3 install xmlschema # 及其他依赖

启动后报错信息:

2022-10-17 08:10:29,024 1 INFO dblive odoo.addons.base.models.ir_attachment: _read_file reading /var/lib/odoo/filestore/dblive/6a/6ad87633490735f27b4f73d8d984193d8d7d6947 
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/api.py", line 789, in get
    field_cache = field_cache[record.env.cache_key(field)]
KeyError: (None, None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 970, in __get__
    value = env.cache.get(record, self)
  File "/usr/lib/python3/dist-packages/odoo/api.py", line 793, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'ir.attachment(52,).datas'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/api.py", line 789, in get
    field_cache = field_cache[record.env.cache_key(field)]
KeyError: (None,)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 970, in __get__
    value = env.cache.get(record, self)
  File "/usr/lib/python3/dist-packages/odoo/api.py", line 793, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'ir.attachment(52,).raw'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_attachment.py", line 102, in _file_read
    with open(full_path, 'rb') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/var/lib/odoo/filestore/dblive/6a/6ad87633490735f27b4f73d8d984193d8d7d6947'

容器内filestore/dblive目录内容:

odoo@95198003ea0a:~/filestore/dblive$ ls
16  18  86  checklist  d0  e7  fa
解决方案

报错核心是数据库中记录的附件文件未同步到开发容器的filestore目录,仅迁移数据库不足以完整复制Odoo实例数据,必须同步filestore目录。按以下步骤操作:

  • 从生产实例同步filestore目录到本地
    假设生产实例的filestore路径为/var/lib/odoo/filestore/dblive,用scp复制到本地:

    scp -r user@生产服务器IP:/var/lib/odoo/filestore/dblive ./local-filestore
    
  • 将本地filestore上传到开发容器
    用docker cp将目录复制到容器对应的路径:

    sudo docker cp ./local-filestore docker_name:/var/lib/odoo/filestore/
    
  • 修正容器内filestore的权限
    确保Odoo用户拥有目录读写权限:

    sudo docker exec -it docker_name chown -R odoo:odoo /var/lib/odoo/filestore/dblive
    
  • 重启Odoo容器

    sudo docker restart docker_name
    

如果生产实例也是Docker容器,可直接在容器间复制:

sudo docker cp 生产容器名:/var/lib/odoo/filestore/dblive ./local-filestore
sudo docker cp ./local-filestore 开发容器名:/var/lib/odoo/filestore/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:10:58