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

Odoo 13模块安装时security.xml相关KeyError原因排查

Odoo 13模块安装KeyError:external ID找不到的排查原因

以下是几种可能导致该报错的原因,按排查优先级排序:

  • security.xml未被纳入模块加载清单
    再仔细核对__manifest__.py里的data列表,确认是否包含了security.xml的正确路径(比如'security/security.xml',如果文件放在security子目录下)。哪怕路径多了个空格、少了个斜杠,都会导致Odoo跳过该文件,自然读不到里面的external ID。

  • 数据库残留数据或缓存干扰
    之前安装过该模块的话,数据库里可能残留了旧的模块记录或缓存,导致Odoo没有重新解析新的security.xml。可以先完全卸载模块(在Odoo后台删除模块后,手动清理数据库中ir_model_data表中该模块的相关记录),然后重启Odoo服务并加上--clear-cache参数清理缓存,再重新安装模块。

  • 文件权限不足
    Ubuntu虚拟机里,Odoo运行用户(通常是odoo用户)可能没有读取security.xml的权限。检查文件权限:

    ls -l /path/to/your/module/security/security.xml
    

    确保文件所有者是odoo或所属组包含odoo,权限至少设置为644,目录权限设置为755,否则Odoo无法读取文件内容。

  • external ID拼写或命名空间冲突
    再次检查security.xml里的ID定义,确认<record>标签的id属性值完全是inventory_keeper_manager_role,注意大小写(Odoo的external ID区分大小写)。另外,排查是否有其他模块也定义了同名的external ID,导致Odoo优先加载了其他模块的记录,而非当前模块的。

  • 依赖模块未正确加载
    虽然你说清单顺序正确,但如果这个角色依赖其他模块的权限组或模型,而依赖模块未完全安装或加载,也会导致ID无法被识别。核对__manifest__.py的depends列表,确保所有依赖模块都已正确安装,且安装顺序在当前模块之前。

  • security.xml语法或兼容性问题
    检查security.xml里的res.groups定义是否符合Odoo 13的规范,比如是否使用了Odoo 13不支持的字段或属性。哪怕是一个未闭合的标签、错误的属性名,都会导致整个文件解析失败,ID无法被注册。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 19:47:08