flowable初始化建表失败问题解决(oracle,mysql)

注:本文适用于“springboot项目,因整合了druid导致的flowable无法自动建表问题”。首先flowable是提供指定数据库用户配置属性的。但是因为druid的关系,会导致加上此配置启动异常。因此提供曲线救国的解决方案。(oracle和mysql数据库)

MySql:

springboot中的application.yml文件,在配置数据库连接时,需要在尾巴加上&nullCatalogMeansCurrent=true,默认是false。(这样做的主要目的,是能保证flowable自动建表,可以建在正确的数据库中)

原因:如果是false的话,会遍历当前链接下的所有数据库进行查询(因为使用的是root用户登录)如果其他数据库,有flowable相关表的话,则判定为不缺少表。因而不会进行表更新操作。但是在实例化对象的时候,又无法查到相关数据,所以会在启动时报错。

ORACLE:

application.yml配置文件里面注掉druid,pom注掉druid引用。flowable配置增加database-schema指定域(就是想要建表的数据库用户名)。启动项目,可以自动建表,但是会出错,此时不用管,表已经完全建好了,恢复原先配置,去掉database-schema即可。

原因查找过程:

1、oracle数据库当flowable用户存在工作流相关表的时候,ftest用户初始化失败(自动建表失败)。

2、删除flowable用户,ftest初始化成功。

3、再次新建flowable用户,使用flowable用户连接,初始化失败。同时发现,yml文件中,存在flowable.database-schema属性,(解释为:In some situations you want to set the schema to use for table checks / generation if the database metadata doesn't return that correctly.)。将其设置为flowable后,启动时抛出异常(SQLFeatureNotSupportedException),异常抛出点为com.alibaba.druid.pool.DruidPooledConnection.setSchema。查看Druid源码,当调用setSchema会无条件抛出异常。。

4、因此可以确定的是,目前遇到的工作流无法初始化,是因为同一个原因引起:数据库中,存在其他已经初始化过的用户/域

 

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值