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

Odoo V15迁移至新Proxmox后出现500内部服务器错误

Odoo 15公网访问500错误(本地IP正常):附件冲突问题解决指南

问题背景

  • 环境:Odoo 15,从雷击损坏的Proxmox服务器迁移至新节点
  • 异常现象:通过本地IP 192.168.5.100 访问网站及后台完全正常,但公网访问时触发500 Internal Server Error
  • 错误日志核心:KeyError 最终抛出 UserError: "The attachment is colliding with an existing file"
  • 已排查操作:重装模板、检查网络/代理/SSL配置、确认web.base.url参数设置,均未解决问题

问题根源

Odoo的附件存储路径是通过请求域名(或web.base.url)的SHA1哈希值生成的。迁移后,公网域名与原本地IP对应的哈希路径前缀重复,导致Odoo处理公网请求时,试图访问的附件路径已被本地IP对应的附件占用,触发文件碰撞错误。

解决方案

1. 批量更新附件存储路径与文件系统

步骤1:备份数据(必须操作)

先全量备份Odoo数据库和附件存储目录,避免数据丢失。

步骤2:计算哈希前缀

登录Odoo数据库执行SQL,分别获取本地IP和公网域名的哈希前缀(取前2位):

-- 计算本地IP的哈希前缀
SELECT SUBSTRING(hash('sha1', 'http://192.168.5.100') FROM 1 FOR 2) AS local_hash;
-- 计算公网域名的哈希前缀(替换为你的实际域名)
SELECT SUBSTRING(hash('sha1', 'https://your-public-domain.com') FROM 1 FOR 2) AS public_hash;

步骤3:更新数据库中的附件路径

将ir_attachment表中本地IP对应的路径替换为公网域名的路径:

UPDATE ir_attachment
SET store_fname = REPLACE(store_fname, '[local_hash]/', '[public_hash]/')
WHERE store_fname LIKE '[local_hash]/%';

将[local_hash]和[public_hash]替换为上一步得到的实际值。

步骤4:同步文件系统附件目录

进入Odoo的附件存储目录(默认路径为/var/lib/odoo/.local/share/Odoo/filestore/[your-db-name]),执行以下命令同步文件:

# 复制原哈希目录的文件到新哈希目录
cp -r [local_hash]/ [public_hash]/
# 验证文件正常后,可删除原目录(可选)
# rm -rf [local_hash]/

2. 强制Odoo使用统一域名生成附件路径

编辑Odoo配置文件odoo.conf,添加以下参数:

web.base.url = https://your-public-domain.com
web.base.url.freeze = True

添加后重启Odoo服务:

systemctl restart odoo

该配置会强制Odoo始终使用公网域名生成附件路径,避免因请求域名不同导致的路径冲突。

3. 清理重复附件记录(可选)

如果上述步骤仍未解决,可查询并清理ir_attachment表中的重复附件:

-- 查询存在路径冲突的附件记录
SELECT id, name, store_fname FROM ir_attachment
WHERE store_fname IN (
    SELECT store_fname FROM ir_attachment GROUP BY store_fname HAVING COUNT(*) > 1
);

手动保留有效记录,删除重复项,或通过Odoo后台的「设置-技术-附件-附件管理」界面清理。

注意事项

  • 所有数据库操作前必须备份,防止数据丢失
  • 若使用Nginx等反向代理,确保配置中正确传递Host请求头(如添加proxy_set_header Host $host;)
  • 检查Odoo运行用户对附件存储目录的读写权限,避免因权限问题导致的访问失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:06:06