Camunda 适配国产数据库达梦(DM8)完整教程
DM DBMS': databaseType is null,'ENGINE-03089
·
Camunda 适配国产数据库达梦(DM8)完整教程
- Camunda
- 达梦数据库
- 流程引擎
- 国产化适配
categories: - 工作流引擎
- 数据库适配
适用于 Camunda 7.x + 达梦 DM8 的国产化适配实践经验,汇总各大平台参考资料,结合实测环境给出完整解决方案。
💥 问题背景
在国产适配过程中,Camunda 默认无法识别达梦数据库(DM DBMS),并会抛出类似如下异常:
couldn't deduct database type from database product name 'DM DBMS': databaseType is null
或者:
ENGINE-03089 Batching not supported: The jdbc driver in use does not return the number of affected rows when executing statement batches.
🔧 解决方案对比
| 方案 | 场景 | 成本 | 是否推荐 |
|---|---|---|---|
A. 修改源码/JAR 支持 dm |
希望彻底兼容达梦语法 | 中等 | ✅ 推荐(长期) |
B. 配置数据库类型为 oracle |
快速上线 | 低 | ⚠️ 有兼容性风险 |
| C. 设置 URL 兼容 + 禁用批处理 | 临时解决 batching 错误 | 低 | ✅ 推荐(临时) |
🛠️ 方案 A:打补丁支持 dm
适合公司可维护 Camunda 引擎 JAR 包的情况
修改入口一:ProcessEngineConfigurationImpl.java
databaseTypeMappings.setProperty("DM DBMS", "dm");
修改入口二:DbSqlSessionFactory.java
public static final String DMDBMS = "dm";
databaseSpecificLimitBeforeStatements.put(DMDBMS,
"select * from ( select a.*, ROWNUM rnum from (");
...
databaseSpecificFalseConstant.put(DMDBMS, "0");
构建说明
- 使用 JarTool 或 Maven 打开并修改
camunda-engine-7.x.x.jar - 重新打包替换依赖
- 或 fork 官方源码重构并构建私有版本
⚙️ 方案 B:配置 database.type=oracle
无需改代码,只需要:
camunda:
bpm:
database:
type: oracle
spring:
datasource:
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://127.0.0.1:5236/xxxx
username: xxx
password: xxx
此模式依赖达梦的 Oracle 兼容模式,Camunda 会用 Oracle 方言执行 SQL。
🚫 遇到 Batching 报错?
出现:
ENGINE-03089 Batching not supported: The jdbc driver in use does not return the number of affected rows...
说明你使用了:
jdbc:dm://127.0.0.1:5236/xxxx?compatibleMode=oracle
此时 达梦 JDBC 在 Oracle 模式下不返回批处理结果,Camunda 报错。
✅ 方案 C:兼容模式 + 关闭批处理 (不推荐,各种问题)
-
URL 使用 Oracle 模式:
jdbc:dm://127.0.0.1:5236/xxxx?compatibleMode=oracle -
禁用 Camunda 批处理:
camunda.bpm.jdbcBatchProcessing=false
重启即可避免此类错误。
✅ 验证方法
SELECT BANNER FROM V$VERSION;
控制台应打印:
Database Product Name: DM DBMS
Database Type: dm (或 oracle)
并且流程启动、任务签收等不再报错。
🧭 常见问题排查
| 问题 | 解决方案 |
|---|---|
databaseType is null |
修改 Camunda 源码或配置为 oracle |
batching not supported |
关闭 Camunda 的 JDBC 批处理 |
| 无法建表 | 使用 oracle 类型初始化数据库,再切换 |
ORA-00942 |
确认兼容模式开启、用户权限完整 |
📚 参考资料
- CSDN: Camunda适配达梦数据库实战记录
- CSDN: 达梦数据库批处理兼容问题解决
- 鲲鹏社区: Camunda国产数据库兼容性适配实践
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)