商业版集成国产数据库:电科金仓
# 前置条件
# 安装金仓数据库(V8R6C9B14),支持金仓数据库Mysql模式
docker run -tid --privileged --name kingbase -p 54321:54321 -e ENABLE_CI=no -e NEED_START=yes -e DB_USER=root -e DB_PASSWORD=root -e DB_MODE=mysql 686e0dfb177e
# 安装金仓数据库(V8R6C9B14),支持金仓数据库Postgresql模式
docker run -tid --privileged --name kingbase -p 54321:54321 -e ENABLE_CI=no -e NEED_START=yes -e DB_USER=root -e DB_PASSWORD=root -e DB_MODE=pg 686e0dfb177e
- 安装JDBC(kingbase8-8.6.0.jar)驱动到Maven私服,若没有可以安装到本地,执行如下命令:
mvn install:install-file -Dfile="kingbase8-8.6.0.jar" "-DgroupId=cn.com.kingbase" "-DartifactId=kingbase8" "-Dversion=8.6.0" "-Dpackaging=jar"
- 安装好数据库之后,打开数据库开发工具,创建数据库
flyflow,新建模式flyflow
# 修改代码配置
- 默认分支是不支持金仓数据库的,需要切换到分支:
**-gcdb - 先将主分支代码合并到国产数据库分支:
**-gcdb - 打开module:flyflow-flowable的pom.xml文件,注释掉
达梦模块的依赖
<!-- <dependency>-->
<!-- <groupId>cc.flyflow.flowable.dm</groupId>-->
<!-- <artifactId>flyflow-flowable-dm</artifactId>-->
<!-- </dependency>-->
打开金仓的模块依赖:
<dependency>
<groupId>cc.flyflow.flowable.kingbase</groupId>
<artifactId>flyflow-flowable-kingbase8</artifactId>
</dependency>
- 打开module:flyflow-biz的pom.xml文件,注释掉
达梦模块的依赖
<!-- <dependency>-->
<!-- <groupId>org.anyline</groupId>-->
<!-- <artifactId>anyline-data-jdbc-dm</artifactId>-->
<!-- </dependency>-->
打开金仓的模块依赖:
<dependency>
<groupId>org.anyline</groupId>
<artifactId>anyline-data-jdbc-kingbase</artifactId>
</dependency>
- 打开application.yml文件,修改数据源配置为金仓数据库,这里要注意下方的三个flyflow,一定要配置一样,大小写也一样
datasource:
url: jdbc:kingbase8://192.168.31.86:54321/flyflow?currentSchema=flyflow
driver-class-name: com.kingbase8.Driver
##数据库账号
username: root
##数据库密码
password: root
hikari:
connection-timeout: 10000
validation-timeout: 3000
idle-timeout: 60000
login-timeout: 5
max-lifetime: 60000
maximum-pool-size: 30
minimum-idle: 10
read-only: false
schema: flyflow #金仓数据库 指定schema 并且 currentSchema 和database一致
# 导入数据库表
- 打开根目录下的
/sql/kingbase/执行导入对应模式的脚本即可
# 修改代码配置
默认的配置是支持mysql模式,若需要支持pg模式,以下几点需要修改
org/flowable/common/engine/impl/AbstractEngineConfiguration.java:193:修改为databaseTypeMappings.setProperty("KingbaseES", "postgres");- 修改
liquibase.database.core.MySQLDatabase文件里涉及到kingbase相关的代码改成别的,比如kingbase1,主要有三处修改:getDefaultDatabaseProductName,getShortName,PRODUCT_NAME,找到上面几个地方,将kingbase改为kingbase1(不用区分大小写) - 修改
liquibase.database.core.PostgresDatabase文件里涉及到kingbase1或者KingbaseES1的单词删除最后的1 - 打开
\flyflow-upms\src\main\resources\mapper\DeptMapper.xml文件,搜索关键词kingbase,可以看到每个sql里都有两个注释mysql模式和pg模式,注释掉mysql相关sql,打开pg相关sql
# 注意事项
- 若项目中有达梦相关的报错,可以自行引入达梦相关的包来消除或者删除达梦相关的代码和引入
- 若删除代码,别遗漏此处
MessageConverterConfig中达梦相关的代码