序言:时间是我们最宝贵的财富,珍惜手上的每个时分
作为一款开源的ERP框架,Odoo的二次开发是绕不过去的一个话题,在二开过程中,难免会遇到迭代开发模块的问题,在一些特殊情况下,会出现更新了模块后无法进入Odoo的情况。
目录
一、无法进入的原因
二、解决办法
三、如何避免
例如下图,我们对res_partner下手了,增加了一个新的字段,导致web端500报错无法进入。
一、无法进入的原因
以上述例子为例,在正式环境中我们已经安装了模块【A】,但是由于迭代开发的关系,我们在模块【A】中继续添加字段,且字段 继承修改了 res.partner。
由于Odoo的机制我们需要升级模块才可以写入这个新的字段,但是由于登陆后 会读取 res.partner相关的信息,所以造成了 一个两难局面:
需要进入web升级模块,但是因为升级模块,我无法进入web。
二、解决办法
以ubuntu为例,如果是用官方 apt安装,或者deb安装,可采用此方式进行处理
service odoo stop # 关闭odoo服务
su postgres # 进入postgres 用户
odoo -d 数据 --addons-path=addons目录,可以用【,】隔开 -i 强制升级的模块
例如
odoo -d odoo_test_db --addons-path=/usr/lib/python3/dist-packages/odoo/addons,/odoo/custom -i ro_test
exit # 退出出postgres用户
service odoo start # 启动odoo服务
需要注意的是,强制升级模块时请注意等待命令运行完成(这会费一点时间),如控制台未出现任何报错就证明模块升级成功了。可以安心的退出postgres用户,并启动Odoo。
三、如何避免
我们强制升级模块属于兵来将挡、水来土掩的解决方式,并非长久之计,每一次的正式环境无法访问,都会引起一些骚动。
从根源来说,做好模块设计,减少在已安装的模块中迭代res开头的数据表,即可最大规避次问题。
qq:543127346