You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo-sh从v13升级到v15:升级过程中如何禁用视图或卸载模块?

Odoo-sh v13升级v15:禁用问题视图与卸载自定义模块的正确方法

一、禁用问题视图的正确步骤

直接修改ir_ui_view的active字段后,需确保事务提交并让Odoo加载最新状态,操作流程如下:

  1. 进入Odoo-sh的SHELL标签页,连接目标数据库:
    psql -d $(odoo-sh-db-name)
    
  2. 先确认视图所属模块,避免误操作:
    SELECT name, module FROM public.ir_ui_view WHERE id = 10381;
    
  3. 禁用目标视图并提交事务:
    UPDATE public.ir_ui_view SET active = false WHERE id = 10381;
    COMMIT;
    
  4. 重启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:标准卸载流程

  1. 在psql中标记模块为待删除:
    UPDATE ir_module_module SET state = 'to remove' WHERE name = 'my_custom_module' AND state = 'installed';
    COMMIT;
    
  2. 执行Odoo初始化命令触发卸载:
    odoo-sh-run -- --update all --stop-after-init
    
  3. 卸载完成后重启服务:
    odoo-sh-restart
    

方法2:强制卸载(模块已彻底损坏时使用)

如果标准流程无法执行,可直接标记模块为已卸载并清理关联记录(操作前务必备份数据库):

  1. 在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;
    
  2. 重启Odoo-sh服务:
    odoo-sh-restart
    

注意事项

  • 操作前必须创建数据库备份:odoo-sh-backup
  • 若视图是系统视图的继承,优先修复自定义视图代码而非直接禁用
  • 卸载模块前需确认无其他模块依赖该自定义模块,避免引发连锁错误

内容的提问来源于stack exchange,提问作者Ahrimann Steiner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:10:32