iDempiere数据库升级指南:从migration脚本看跨版本平滑迁移全流程

发布时间:2026/8/22 16:04:47
iDempiere数据库升级指南:从migration脚本看跨版本平滑迁移全流程 iDempiere数据库升级指南从migration脚本看跨版本平滑迁移全流程【免费下载链接】idempiereiDempiere. Community Powered Enterprise. Full Open Source Business Suite ERP/CRM/MFG/SCM/POS项目地址: https://gitcode.com/gh_mirrors/id/idempiereiDempiere 数据库升级并不复杂——它的核心是一套按版本归档的 migration SQL 脚本和一条同步命令。iDempiere 是一套完整的开源企业级业务套件ERP/CRM/MFG/SCM/POS元数据全部存放在数据库中因此版本升级的本质就是按时间顺序补齐数据库脚本。本文将带你完整走一遍 iDempiere 数据库升级流程从脚本目录结构讲起到一键同步与生产监控方案帮助你安全地完成跨版本平滑迁移。为什么 iDempiere 的升级是补脚本iDempiere 采用元数据驱动架构窗口、表格、字段、流程等 UI 与业务定义都以数据形式存放在AD_Window、AD_Table、AD_Column等字典表中。所以升级应用代码的同时必须同步升级数据库里的元数据和业务表结构官方为每个大版本提供成对的postgresql/与oracle/脚本升级 把尚未执行的脚本按时间戳顺序补跑一遍每个脚本执行后都会调用register_migration_script()函数把文件名登记到AD_MigrationScript表系统借此判断哪些脚本还没跑。一个典型的脚本开头migration/iD14/postgresql/202511201738_IDEMPIERE-6733.sql就是先登记、再改表、再同步字典数据三步一体SELECT register_migration_script(202511201738_IDEMPIERE-6733.sql) FROM dual; ALTER TABLE T_ReportStatement ADD COLUMN Account_ID NUMERIC(10) DEFAULT 0; INSERT INTO AD_Column (...) VALUES (...);migration 目录结构一眼看懂版本迁移路线所有迁移脚本集中在仓库根目录的migration/下每个子文件夹对应一个历史版本按字母序即升级顺序版本目录说明migration/i4.1~migration/iD92008–2021 年间的历史版本脚本4.1 起步migration/iD10~migration/iD14近年主版本如 iD14 是最新的 31 个脚本local_sql/你自建的安装级定制脚本见下文processes_post_migration/所有脚本跑完后统一执行的收尾脚本zip_2pack/存放自建的 2Pack 元数据包 zip 文件每个版本目录内部固定分postgresql/和oracle/两个子目录脚本命名约定为yyyymmddHHMM_信息描述.sql时间戳前缀 说明例如202511201738_IDEMPIERE-6733.sql时间戳前缀决定了执行顺序——系统按文件名排序依次应用与所在文件夹无关这正是平滑迁移的关键设计。一键升级用 SyncDB 同步数据库开发环境RUN_SyncDBDev.sh如果你在 Eclipse 中用 install 应用初始化过数据库仓库根目录的 RUN_SyncDBDev.sh 会直接从idempiere.properties读取连接信息并执行同步bash RUN_SyncDBDev.sh # 或指定属性文件和迁移目录 bash RUN_SyncDBDev.sh adempiere.properties migration/iD14生产/服务器环境utils.unix 工具集服务器安装版使用org.adempiere.server-feature/utils.unix/下的工具链RUN_SyncDB.sh→ 按数据库类型调用postgresql/SyncDB.sh或oracle/SyncDB.sh。核心机制非常直白见utils.unix/postgresql/SyncDB.sh查询AD_MigrationScript表得到已执行脚本清单扫描migration/目录下当前数据库类型的.sql文件得到全部脚本清单两者求差集得到待执行脚本按文件名排序逐个用psql执行任一脚本输出中检测到ERROR:/FATAL:等错误标志时立即停止并把每个脚本的完整输出留存在/tmp/SyncDB_out_*/供排查全部成功后追加执行processes_post_migration/里的收尾脚本。已同步时会看到友好提示Database is already in sync - no scripts pending to apply重复执行完全安全幂等。生产级升级MonitoredSyncDB 监控模式正式环境推荐用RUN_MonitoredSyncDB.sh底层是utils.unix/postgresql/MonitoredSyncDB.sh它比普通同步多了三样保障错误留痕脚本报错时自动把AD_MigrationScript中该记录标记为ERError并保存脚本输出方便定位修复包机制.fix供应商/社区可发布修复脚本命名与原脚本一致但后缀改为.001.fix、.002.fix……放入同一目录即可程序会自动查找并应用修复无需手工干预邮件告警若AD_System表配置了 SupportEMail 且系统有 sendmail出错时自动把错误详情发邮件给支持方。官方建议的流程是先在测试/预发环境跑一遍→ 集成修复脚本 → 再在生产环境执行届时修复会被自动带上。加入自己的定制脚本local_sql 规范如果升级时还需要执行安装级定制改动比如自建字段、视图把脚本放进migration/local_sql/规则见该目录的 README.txt目录内同样分postgresql/和oracle/命名沿用yyyymmddHHMM_说明.sql约定它在所有版本目录i4.1 … iD14之后、收尾脚本之前被执行。类似地自建的元数据包可放入migration/zip_2pack/命名为yyyymmddHHMM_客户端代码_说明.zip由org.adempiere.plugin.utils插件在服务器启动后自动应用。升级前检查清单与常见坑 步骤要点1️⃣ 备份数据库升级前执行一次完整备份utils 提供RUN_DBExport.sh/RUN_DBRestore.sh工具2️⃣ 测试环境先行用 MonitoredSyncDB 先跑通全量迁移3️⃣ 版本按序补齐从 i4.1 一路到 iD14脚本必须按时间戳顺序执行不要手工乱序补跑4️⃣ 注意数据库方言postgresql 与 oracle 脚本不可混用脚本按AD_Client/方言独立维护5️⃣ 检查错误输出失败时查看/tmp/SyncDB_out_*/下的 .out 日志按提示手工修复后重跑即可续传6️⃣ 收尾脚本别漏processes_post_migration只在有脚本被应用时才执行手工跳步容易遗漏 小贴士连接信息模板可参考仓库根目录的adempiere-local-template.properties把Connection一行的数据库主机、端口、库名、账号改好即可复用给同步脚本。小结iDempiere 的数据库升级可以归纳为三句话脚本按版本目录 时间戳命名归档天然形成可追溯的迁移流水线SyncDB 通过AD_MigrationScript表做增量对比一键补跑、幂等安全MonitoredSyncDB .fix 修复包 邮件告警为生产环境提供完整的出错兜底方案。掌握这套机制后无论是从 i9 跨到 iD14还是日常跟进小版本补丁你都能在测试环境验证后一条命令完成生产数据库的平滑迁移。【免费下载链接】idempiereiDempiere. Community Powered Enterprise. Full Open Source Business Suite ERP/CRM/MFG/SCM/POS项目地址: https://gitcode.com/gh_mirrors/id/idempiere创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考