Error creating bean with name 'processEngine': Factorybean threw exception on object;nested exceptions org.activiti.engine.ActivitiException: couldn't deduct database type from database product name 'KingbaseES'

    • 背景
    • 错误截图
    • 方案1(改配置)
    • 方案2(自定义配置覆盖activiti)
    • 方案3(改源码)

背景

最近有个项目使用人大金仓数据库kingbase,版本是8.6版本,在工作流服务Activiti(版本是7.1.0.M6)启动时报的这个错

错误截图

启动报错日志

方案1(改配置)

spring:
  activiti:
    database-schema-update: true   # 自动更新表结构(开发环境)
    db-history-used: true          # 启用历史记录
    database-type: postgres        # 强制指定数据库类型(适配KingbaseES)

deepseek给的方案,database-type尝试给了postgres、oracle、kingbase都没用,失败

方案2(自定义配置覆盖activiti)

自定义ProcessEngineConfiguration继承SpringProcessEngineConfiguration,覆盖数据库初始化逻辑,核心思想也是在代码里判断指定databaseType为postgres或者oracle,由于本人经验不足就让deepseek帮写,结果这货写了四五版一堆问题,写的demo引入的类都找不到,放弃

方案3(改源码)

1.下载activiti对应版本源码
参考地址:https://github.com/Activiti/Activiti/tree/7.1.0.M6

2.找不到修改地方的同学可以拿报错信息的部分关键内容,例如“couldn’t deduct database type from database product name”直接全局搜索找到报错代码所在
在这里插入图片描述分析:根据代码逻辑看是从databaseTypeMappings中获取不到名为KingbaseES的属性,因此我们加一个KingbaseES,重新打activiti-engine-7.1.0.M6.jar包解决问题

3.解决后会出现第二个问题,空指针报错,见下图
在这里插入图片描述
同样根据关键字“Error while building ibatis SqlSessionFactory”搜索,刚好在同一个类,见下图
在这里插入图片描述
分析:加载配置文件报错,就是org/activiti/db/properties/目录下缺少kingbase.properties,找到该目录随便复制一个文件把名字改了就行,我们这个kingbase语法是oracle的,所以我拿了oracel的文件复制改名,重新打包解决
注:这个.properties文件主要是分页方言

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐