能否通过Odoo.sh预生产数据库升级版本?自定义模块兼容问题咨询
Odoo.sh 从14升级到16的问题解决方案
关于预生产升级方案的可行性
不能通过指定的表单升级Odoo.sh预生产数据库。Odoo.sh的升级服务核心逻辑是每次升级提交都会自动拉取生产库的最新每日备份,预生产环境中卸载模块的操作不会被纳入升级所用的数据源,所以你的方案不可行——升级时依然会基于包含问题模块的生产备份执行,自然会因兼容问题失败。
更优解决方法
- 创建专属升级测试分支
在Odoo.sh中基于生产分支新建独立的升级测试分支,在该分支内执行:- 通过命令
odoo-bin --uninstall <module_name>卸载存在兼容问题的自定义模块(仅作用于测试分支,不影响生产环境) - 提交修改后触发升级流程,此时升级会基于生产备份,但自动应用分支内的卸载配置,绕开模块兼容障碍
- 通过命令
- 分阶段模块兼容改造
先将不兼容的模块标记为uninstallable,完成核心系统从14到16的升级后,再逐个对模块进行改造:- 替换已弃用的模型、调用过时API
- 完成功能测试后重新安装模块
- 离线快照测试
下载生产库的每日备份快照,在本地或独立测试环境中:- 手动卸载问题模块并执行升级操作
- 完成升级后逐个修复模块兼容性,确认全部功能正常后,再将修改同步到Odoo.sh的升级分支
- 临时调整模块依赖(谨慎操作)
若必须保留生产环境的模块,可在升级分支中临时修改模块的__manifest__.py文件:- 移除对弃用模型的依赖声明
- 标记模块为
post_install类型,先完成核心系统升级,后续再处理模块兼容问题
内容的提问来源于stack exchange,提问作者SallySalty
相关产品推荐
相关产品推荐

