
Odoo 的每个主要版本都提供三年支持,每个新版本都会带来新功能、问题修复和更好的性能。长期停留在旧版本会让日后的升级更加困难,因为版本之间的差距会越来越大。本指南按托管类型逐步说明升级的实际运作方式,以及企业在迁移生产数据库之前应做好哪些准备。
关于资料来源:以下步骤依据 Odoo 官方升级文档和开发者指南。命令、菜单和服务条款可能随版本变化,因此在开始之前,请务必在目标版本的官方文档中确认最新说明。
什么是升级,什么不是升级
升级是将您现有的数据库连同其全部数据,从较旧的 Odoo 版本迁移到较新的受支持版本。Odoo 的升级服务负责转换数据结构,随后由您的团队在正式切换之前对结果进行测试。
升级服务不包括降级到旧版本、在 Community 与 Enterprise 之间切换、更改托管类型,或从其他 ERP 系统迁移。上述每一项都是独立的项目。
不同托管类型的升级频率要求
- Odoo Online:每两年必须进行一次主要版本升级。Odoo 会提前几周通知您,并在后台静默执行一次测试升级;如果您在截止日期前未采取任何行动,系统将自动升级数据库。
- Odoo.sh:在您所用版本的三年支持期结束后,您还有两年时间完成升级,平台会在升级成为强制要求时通知您。
- 本地部署:您可以无限期地停留在同一版本,但不建议这样做。版本差距越小,升级就越容易、成本也越低。

官方流程的七个步骤
- 第 1 步:申请升级后的测试数据库。
- 第 2 步:如有自定义模块,升级其源代码。
- 第 3 步:全面测试升级后的数据库。
- 第 4 步:将测试中发现的任何问题报告给 Odoo 支持团队,选择迁移阶段。
- 第 5 步:在确认无误后,规划生产环境升级。
- 第 6 步:申请生产环境升级。升级运行期间数据库不可用。
- 第 7 步:将上线后发现的任何问题报告给 Odoo 支持团队,选择生产阶段。
第 1 步:申请升级后的测试数据库
在 Odoo Online 上,打开数据库管理器,选择数据库,点击“管理”,然后点击“升级”。选择目标版本,输入用于接收通知的电子邮件地址,将用途保持为“测试”并确认。流程完成后,您会收到一封包含测试数据库链接的电子邮件。
在 Odoo.sh 上,打开“升级”选项卡,在预发布(staging)分支上启动升级。生产环境最新的每日备份会被发送到升级平台,该分支随即进入一种特殊模式:每次新提交都会恢复升级后的备份并更新您的自定义模块。升级日志位于升级后预发布构建的 logs 文件夹中的 upgrade.log 文件。
在本地部署环境中,按照 Odoo 升级文档的说明,在数据库服务器上运行官方升级脚本,并指定测试选项、数据库名称和目标版本。服务器需要能够通过网络访问升级服务器。返回的副本不包含文件存储(filestore),因此在测试之前,请将交付的 filestore 文件夹与生产环境的 filestore 合并。
每次升级成功后,升级报告会附在确认邮件中,同时也会在 Discuss 中发布给管理员。请仔细阅读:报告列出了发生的变更以及需要关注的事项。
第 2 步:升级您的自定义模块
包含自定义模块的数据库,必须等这些模块拥有与目标版本兼容的版本后才能升级。请在申请测试数据库的同时并行开展这项工作。
- 冻结开发:在升级完成之前停止新增功能,只接受缺陷修复。
- 将您的定制内容与新版本进行对比,删除 Odoo 现已作为标准功能提供的部分。
- 在目标版本的空数据库上逐一安装各模块,并修复所有错误和警告。
- 检查视图、电子邮件模板、报表、服务器动作和自动化动作以及计算字段,并在适当之处添加自动化测试。
- 为数据变更编写升级脚本:重命名的模型、字段和外部 ID,从已删除模型中恢复的数据,以及需要重新计算的字段。
升级脚本存放在模块中名为 upgrades 或 migrations 的文件夹下,其下再按完整的模块版本号建立文件夹,例如 19.0.2.0。每个文件以 pre-、post- 或 end- 开头,这决定了它的运行时机:模块加载之前、模块更新之后,或所有模块更新之后。每个文件都定义一个 migrate 函数,该函数接收数据库游标和已安装的版本。
在 Odoo.sh 上,平台会在更新您的模块时运行这些脚本。在本地部署环境中,您需要恢复升级后的转储文件,并使用 odoo-bin 及其更新选项来更新模块。Odoo Online 无法安装自定义 Python 模块,因此那里的自定义功能必须使用 Studio 构建。
第 3 步:测试升级后的数据库
为保护生产环境,测试数据库会经过中和处理:计划动作被停用,外发邮件服务器被替换为虚拟服务器,支付服务商和承运商切换为测试模式,银行同步被关闭。如需测试银行同步,请向您的银行服务商申请沙盒凭据。
- 检查生产环境中处于启用状态的视图在升级后是否仍然启用。
- 打印发票、报价单、交货单及其他报表,并与生产环境进行对比。
- 创建和编辑记录,并测试搜索筛选器、电子邮件模板和导出功能。
- 检查网站页面,并端到端运行主要业务流程,例如从报价到发票再到付款,以及从采购到收货再到账单。
- 测试 API 和 EDI 等外部集成、自动化动作、服务器动作以及跨应用工作流。
- 将关键数据与生产环境进行对比:库存价值、科目余额、未结应收款和应付款。
为每个部门提供书面测试脚本并指定负责人,记录每一项结果。没有书面记录的测试就等于没有做过。
第 4 步:上线前报告问题
通过支持页面将测试数据库中发现的每一处差异或错误报告给 Odoo 支持团队,并选择迁移阶段。Odoo 随后会修复升级脚本,您再申请新的测试数据库以确认修复效果。如此反复,直到结果完全正常。
第 5 步:规划生产环境升级
- 选择业务量较低的时段,因为升级期间数据库不可用。
- 在上线前不久申请一个新的测试数据库,并在前一天进行完整演练。
- 提前告知用户停机时间窗口,并在升级开始前停止数据录入。
- 进行备份并验证其可用性,同时为上线后的最初几个小时准备一份简短的检查清单。
第 6 步:申请生产环境升级
在 Odoo Online 上,重复测试申请的操作,但将用途设置为“生产”。升级完成后,将无法返回之前的版本。
在 Odoo.sh 上,当有新的提交推送到生产分支时,生产环境升级即会启动,因此升级后的数据库与更新后的自定义模块会一同部署。如果出现任何失败,平台会自动回滚升级;升级成功后,平台会保留一份升级前的备份。
在本地部署环境中,运行同一个升级脚本,但使用生产选项代替测试选项。数据库发送之后在生产环境中所做的任何更改都不会出现在升级后的数据库中。请在启动新版本之前合并 filestore。
第 7 步:上线后的支持
在最初几天内确保关键用户随时可以响应,在计划动作、电子邮件和集成重新启用时进行监控,并将任何问题以生产阶段报告给 Odoo 支持团队。
升级服务为 Enterprise 客户提供的内容
使用 Odoo Enterprise 时,升级到最新版本已包含在订阅中,同时还包括对升级后数据库中所发现差异的支持。其范围涵盖标准应用、在 Studio 及其订阅有效期间所做的 Studio 定制,以及由定制维护订阅所覆盖的定制内容。
该服务不包括清理现有数据或配置、在没有维护合同的情况下升级自研或第三方模块,也不包括新版本的培训。Community 用户不在此服务范围内,通常依靠由 Odoo Community Association 维护的开源项目 OpenUpgrade。
来自升级项目的实用建议
- 升级前清理主数据:重复的合作伙伴、未使用的产品和已归档的配置都会拖慢测试进度。
- 在申请测试数据库之前卸载不再使用的模块,以减少升级需要转换的内容。
- 即使升级服务可以直接升级到目标版本,在规划时也要按逐个版本跨越来安排。
- 列出每一项定制及其负责人,并为每一项做出决定:保留、改用标准功能或舍弃。
- 切勿跳过演练:大多数上线时的意外都源于最后一次测试之后录入的数据。
1CBMS 如何为您提供帮助
1CBMS 端到端地规划和实施 Odoo 升级项目:评估您当前的版本和定制内容、迁移自定义模块、为各部门编写测试脚本、与 Odoo 支持团队协调处理问题,并监督生产环境上线。欢迎通过网站与我们联系,共同评估您的升级路径。