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

转载:https://blog.csdn.net/liusa825983081/article/details/106849053?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-4-106849053.nonecase

 

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

MySql:

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

flowable初始化建表失败问题解决(oracle,mysql)_第1张图片

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

ORACLE:

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

flowable初始化建表失败问题解决(oracle,mysql)_第2张图片

原因查找过程:

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

你可能感兴趣的:(错误解析)