Odoo10更新base模块触发XMLSyntaxError错误如何解决
Odoo10 base模块加载base_data.xml报错修复方案
问题描述
尝试仅启用base插件运行Odoo10,但每次加载base/base_data.xml文件时都会出现报错。使用
-i init初始化新数据库,或是在旧数据库中执行-u base更新base模块,均得到相同的报错结果,推测可能是依赖库版本不匹配导致。
报错日志
2021-08-26 18:22:51,873 64535 INFO odoo10 odoo.modules.registry: module base: creating or updating database tables 2021-08-26 18:22:53,179 64535 INFO odoo10 odoo.modules.loading: loading base/res/res.lang.csv 2021-08-26 18:22:53,658 64535 INFO odoo10 odoo.modules.loading: loading base/base_data.xml 2021-08-26 18:22:53,671 64535 ERROR odoo10 odoo.models: Exception while validating constraint Traceback (most recent call last): File "/home/viet/odoo-10.0/odoo/models.py", line 1081, in _validate_fields check(self) File "/home/viet/odoo-10.0/odoo/addons/base/ir/ir_ui_view.py", line 279, in _check_xml view_arch = etree.fromstring(encode(view.arch)) File "src/lxml/lxml.etree.pyx", line 3213, in lxml.etree.fromstring (src/lxml/lxml.etree.c:82934) File "src/lxml/parser.pxi", line 1819, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:124533) File "src/lxml/parser.pxi", line 1707, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:123074) File "src/lxml/parser.pxi", line 1079, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:117114) File "src/lxml/parser.pxi", line 573, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:110510) File "src/lxml/parser.pxi", line 683, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:112276) File "src/lxml/parser.pxi", line 613, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:111124) XMLSyntaxError: Extra content at the end of the document, line 5, column 13 2021-08-26 18:22:53,674 64535 WARNING odoo10 odoo.modules.loading: Transient module states were reset 2021-08-26 18:22:53,674 64535 ERROR odoo10 odoo.modules.registry: Failed to load registry Traceback (most recent call last): File "/home/viet/odoo-10.0/odoo/modules/registry.py", line 83, in new odoo.modules.load_modules(registry._db, force_demo, status, update_module)
解决方法
报错核心是lxml解析XML文件时检测到结构不合法,按以下优先级排查即可:
- 检查base_data.xml文件完整性
打开路径/home/viet/odoo-10.0/odoo/addons/base/base_data.xml,确认所有内容都包裹在唯一的<odoo>根标签内,重点检查日志提示的第5行第13列位置,确认没有多余字符、不闭合标签、乱码等异常,确保文件没有被人为篡改或下载损坏。如果文件内容异常,直接替换为Odoo10官方源码对应文件即可。 - 校验文件编码格式
确认该文件为UTF-8无BOM编码,Windows自带记事本编辑XML文件会默认插入BOM头,导致解析时检测到多余不可见字符,可使用VSCode、Notepad++等工具修改编码为UTF-8无BOM格式。 - 排查lxml版本兼容性
Odoo10适配的lxml最高版本为4.2.6,版本过高会出现解析规则不兼容问题。执行pip show lxml查看当前安装版本,如果超出适配范围,执行pip install lxml==4.2.6重装兼容版本后再重试操作。 - 检查文件读取权限
确认运行Odoo进程的系统用户对base_data.xml文件有可读权限,避免文件读取被截断导致的XML结构不完整报错。
内容的提问来源于stack exchange,提问作者Nguyen
相关产品推荐
相关产品推荐

