DTCloud异常与解决方法一览

发布时间 2023-03-30 16:06:58作者: 中亿丰数字科技

Dtcloud的异常抛出往往令人摸不着头脑,本文记录了一些本人在使用过程中遇到的一些异常以及解决的方式,配上异常截图方便日后可以”按图索骥”。目前所记录的问题可能还比较片面,日后还当完善。以下是正文:
image.png

分析异常:模型 dtb.air.base 继承了不存在的模型 dtb.equipment.list
解决方式:模块的 manifest.py 文件的depends字段中添加模型 dtb.equipment.list 所在模块包名。
image.png

分析异常:报错提示模型 dtb.energy.base中sbomp_park_code字段related参数引用的字段不存在。
解决方式:自行决定添加related参数引用的字段或删除sbomp_park_code字段。
image.png

分析异常:简单的KeyError异常,很难一眼看出哪里的问题,唯一的提示就是dtb_energy_report_id。
image.png

追踪到出异常的代码,是一个One2many字段加载出现了问题,即模型中的相关字段加载出现了问题,按图索骥找到dtb_energy_report_id对应的字段。
image.png

One2many实例化的inverse_name参数必需是comodel_name中已存在的。
解决方法:修改使得One2many的inverse_name参数存在于dtb.energy.report.line中。
image.png

分析异常:乍一看同上一个问题类似,但并不是,标红处是在加载时执行的方法,可以看出环境变量中缺失对应的模型类。
解决方法:模块的 manifest.py 文件的depends字段中添加模型dtb.measurement.level所在模块包名。
image.png

分析异常:同是KeyError异常,这里是模型未加载成功,我们可以在重启的日志中发现问题
image.png

很明显就是__manifest__.py文件的依赖写错导致了本模块未加载成功。
解决方法:添加缺失的逗号即可。
image.png
image.png

分析异常:注册中心不存在模型dtb.car,就是模型没有被注册,通常是缺失对应的模块依赖。
解决方法:模块的 manifest.py 文件的depends字段中添加模块名 dtb_car。
image.png
image.png

分析异常:加载xml文件找不到对应模型,即模型未注册,一般是依赖问题。
解决方式:模块的 manifest.py 文件的depends字段中添加依赖名。
image.png
image.png

分析异常:数据模块出现的异常,在data目录下的xml文件中,一个模型id进行创建或更新记录时找到了不同的dtb.equipment.list记录,xml文件中可能存在相同的id
解决方式:修改record标签中的id,使得每个都是单一不重复的。

作者:吴超