You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Odoo 15更新GitHub代码重启服务后选择数据库时出现XML解析错误

Odoo 15更新GitHub代码重启服务后选择数据库时出现XML解析错误

看起来你遇到的是Odoo更新后缓存与旧数据库数据不兼容导致的问题,这种情况在旧数据库适配新核心代码时很常见,我给你几个实用的排查和解决思路:

  • 清除Odoo缓存
    错误栈里明确出现了KeyError指向ir.qweb的缓存项,说明旧缓存和新代码的结构不匹配了。你可以直接操作数据库清除缓存表:

    1. 登录PostgreSQL,切换到你的目标数据库
    2. 执行SQL命令:DELETE FROM ir_cache;
    3. 重启Odoo服务
      也可以临时用odoo-bin --without-cache启动服务,跳过缓存加载验证问题。
  • 强制更新视图与翻译数据
    报错的核心是ValueError: can only parse strings,出现在XML翻译解析环节,大概率是旧的视图架构(arch字段)或者翻译数据异常。可以尝试:

    1. 先重置视图的文件系统缓存:UPDATE ir_ui_view SET arch_fs = NULL;
    2. 用命令行强制更新所有模块并重新加载语言:
      odoo-bin -d 你的数据库名 --update all --load-language en_US
      
      替换你的数据库名为实际名称,这会重新生成所有视图结构和翻译数据。
  • 排查第三方模块兼容性
    如果你安装了第三方自定义模块,很可能是这些模块的视图或逻辑和更新后的Odoo核心不兼容。可以先禁用所有非官方模块,重启Odoo后看看是否能正常访问数据库,如果恢复正常,再逐个启用模块排查出问题的那个,针对性修复或更新模块代码。

  • 修复异常的视图/翻译记录
    如果上面的方法都没效果,可能是某个特定视图的arch字段为空或者不是合法字符串,或者翻译表ir_translation里存在异常值。可以通过SQL查询定位问题记录:

    • 检查空值视图:SELECT * FROM ir_ui_view WHERE arch IS NULL;
    • 检查异常翻译:SELECT * FROM ir_translation WHERE value IS NULL OR value = '';
      找到异常记录后,要么删除(如果是无用记录),要么手动修复为合法的XML字符串或翻译文本。

另外你提到新数据库能正常运行,这是因为新数据库没有旧的缓存、视图和翻译遗留数据,完全基于新代码生成,所以不会出现兼容性冲突。

备注:内容来源于stack exchange,提问作者Neo Matrix

火山引擎 最新活动