RuoYiClound国产数据库人大金仓支持

写在前面:RuoYi框架中nacos(2.5.1) + SeataServer(2.5.0) 国产数据库人大金仓改造支持。

Maven 安装人大金仓数据库驱动到私服

  1. 与人大金仓人员联系获取数据库对应版本的数据库驱动
  2. maven 命令把 jar 包构建成私服坐标
    <dependency>
      <groupId>com.kingbase8</groupId>
       <artifactId>kingbase8</artifactId>
       <version>${kingbase8.version}</version>
   </dependency>

SeataServer 人大金仓支持

SeataServer官网中没有明确说明对人大金仓数据库的支持,但是在某些博客中找到从2.3版本后开始支持KingBase
在这里插入图片描述

  1. 修改pom增加人大金仓数据库驱动依赖
  2. 修改application.properties文件,修改代码如下
# 数据库类型
store.db.dbType=kingbase
# JDBC 驱动
store.db.driverClassName=com.kingbase8.Driver
# 数据库连接地址
# store.db.url=jdbc:kingbase8://xxxx:xx/gzszh-test?currentSchema=gqszh-seata,SYS_CATALOG

Nacos 人大金仓支持

官网仍然没有没确指定nacos 对人大金仓数据库方面的支持,而且这里有点小坑。改造方案如下,在官网上找到数据库支持拓展插件
nacos插件地址
在这里插入图片描述

  1. git 下载源代码,切换到v2-devlop分支,可以看到父级pom中对应的事2.5.0~2.6版本,然后maven编译,编译好的 jar包nacos-kingbase-datasource-plugin-ext-1.0.0-SNAPSHOT.jar。
    在这里插入图片描述

  2. 把编译好的jar 复制到nacos 项目中修改为如下的名字(修改名字非必须),在 pom中引入该jar在这里插入图片描述

  3. 启动nacos 服务报错,找不到config_info_gray这个表,而且插件中的nacos-kingbase.sql 中也没有这个表(踩坑)
    在这里插入图片描述

  4. 跟踪一下源代码,发现已经加载到插件配置的kingbase了,无疑插件是不是版本不对?
    在这里插入图片描述
    继续跟踪发现Mapper_SPI(Nacos插件机制)中发现只有这8张表被扫描到了,或者说只有这8个表对应的Mapper被扫描到了,少了一个Mapper,就是报错的哪个。
    在这里插入图片描述

  5. 切换到默认的devlop分支,去找找最新的分支上是否有这个Mapper,devlop分支支持最新nacos 版本 V3,这里有对应实现类中的Mapper的支持,如下图所示,但是初始化脚本中仍然没有这个表的Sql 语句(踩坑),我把语句也贴在下面了。
    在这里插入图片描述

-- config_info_gray ddl
CREATE TABLE "nacos_config"."config_info_gray" (
"id" uint8 NOT NULL,
"data_id" varchar(255) NOT NULL,
"group_id" varchar(128) NOT NULL,
"content" longtext NOT NULL,
"md5" varchar(32),
"src_user" text,
"src_ip" varchar(100),
"gmt_create" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
"gmt_modified" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
"app_name" varchar(128),
"tenant_id" varchar(128) DEFAULT ''::varchar,
"gray_name" varchar(128) NOT NULL,
"gray_rule" text NOT NULL,
"encrypted_data_key" varchar(256) NOT NULL DEFAULT ''::varchar,
CONSTRAINT "PRIMARY_idx3" PRIMARY KEY ("id"));

COMMENT ON TABLE "nacos_config"."config_info_gray" IS 'config_info_gray';
CREATE UNIQUE INDEX "uk_configinfogray_datagrouptenantgray" ON "nacos_config"."config_info_gray" USING btree ("data_id" COLLATE "pg_catalog"."ci_x_icu" "pg_catalog"."text_ops" ASC NULLS FIRST,"group_id" COLLATE "pg_catalog"."ci_x_icu" "pg_catalog"."text_ops" ASC NULLS FIRST,"tenant_id" COLLATE "pg_catalog"."ci_x_icu" "pg_catalog"."text_ops" ASC NULLS FIRST,"gray_name" COLLATE "pg_catalog"."ci_x_icu" "pg_catalog"."text_ops" ASC NULLS FIRST);
COMMENT ON COLUMN "nacos_config"."config_info_gray"."id" IS 'id';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."data_id" IS 'data_id';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."group_id" IS 'group_id';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."content" IS 'content';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."md5" IS 'md5';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."src_user" IS 'src_user';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."src_ip" IS 'src_ip';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."gmt_create" IS 'gmt_create';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."gmt_modified" IS 'gmt_modified';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."app_name" IS 'app_name';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."tenant_id" IS 'tenant_id';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."gray_name" IS 'gray_name';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."gray_rule" IS 'gray_rule';
COMMENT ON COLUMN "nacos_config"."config_info_gray"."encrypted_data_key" IS 'encrypted_data_key';
;
  1. 把ConfigInfoGrayMapperByKingbase.java复制到刚才的v2_devlop分支下,在META-INF中增加如下代码,这是SpringBoot加载Starter中的写法,可以把这个类扫描为Spring的一个Bean
    在这里插入图片描述
  2. 重新打包编译,就可以正常启动了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值