Odoo-sh从v13升级到v15:升级过程中如何禁用视图或卸载模块?
Odoo-sh v13升级v15:禁用问题视图与卸载自定义模块的正确方法
一、禁用问题视图的正确步骤
直接修改ir_ui_view的active字段后,需确保事务提交并让Odoo加载最新状态,操作流程如下:
- 进入Odoo-sh的SHELL标签页,连接目标数据库:
psql -d $(odoo-sh-db-name) - 先确认视图所属模块,避免误操作:
SELECT name, module FROM public.ir_ui_view WHERE id = 10381; - 禁用目标视图并提交事务:
UPDATE public.ir_ui_view SET active = false WHERE id = 10381; COMMIT; - 重启Odoo-sh服务:
odoo-sh-restart
如果禁用单个视图仍无法解决问题,可尝试禁用该自定义模块下的所有视图:
UPDATE public.ir_ui_view SET active = false WHERE module = 'my_custom_module'; COMMIT;
二、卸载自定义模块的正确方法
仅修改ir_module_module的状态无法触发Odoo的卸载逻辑(如清理关联数据表、依赖记录等),需配合执行Odoo的初始化命令完成卸载:
方法1:标准卸载流程
- 在psql中标记模块为待删除:
UPDATE ir_module_module SET state = 'to remove' WHERE name = 'my_custom_module' AND state = 'installed'; COMMIT; - 执行Odoo初始化命令触发卸载:
odoo-sh-run -- --update all --stop-after-init - 卸载完成后重启服务:
odoo-sh-restart
方法2:强制卸载(模块已彻底损坏时使用)
如果标准流程无法执行,可直接标记模块为已卸载并清理关联记录(操作前务必备份数据库):
- 在psql中执行:
-- 标记模块为已卸载 UPDATE ir_module_module SET state = 'uninstalled' WHERE name = 'my_custom_module'; -- 清理模块关联的视图 DELETE FROM ir_ui_view WHERE module = 'my_custom_module'; -- 清理模块关联的模型(谨慎操作,避免误删系统数据) DELETE FROM ir_model WHERE module = 'my_custom_module'; COMMIT; - 重启Odoo-sh服务:
odoo-sh-restart
注意事项
- 操作前必须创建数据库备份:
odoo-sh-backup - 若视图是系统视图的继承,优先修复自定义视图代码而非直接禁用
- 卸载模块前需确认无其他模块依赖该自定义模块,避免引发连锁错误
内容的提问来源于stack exchange,提问作者Ahrimann Steiner
相关产品推荐
相关产品推荐

