springboot+mybatis-plus mysql转人大金仓数据库

一、数据迁移

官方地址下载全量安装包:人大金仓-成为世界卓越的数据库产品与服务提供商

安装后可以转到官方数据迁移教程:3. MySQL数据库移植实战 — KingbaseES产品手册

作者这里使用的是KDTS离线迁移方式。

二、maven引入kingbase8驱动

作者使用的离线引入方式

驱动下载地址:人大金仓-成为世界卓越的数据库产品与服务提供商

	<!--人大金仓-->
		<dependency>
			<groupId>com.kingbase8</groupId>
			<artifactId>kingbase8</artifactId>
			<version>8.6.0</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/kingbase8-8.6.0.jar</systemPath>
		</dependency>

三、基础配置

  数据库连接配置:

spring:
    application:
        name: service
    datasource:
        driver-class-name: com.kingbase8.Driver
        url: jdbc:kingbase8://ip:54321/{数据库名}
        username: ***
        password: ***

四、迁移遇到的问题

先附上官方解决兼容问题文档地址:KingbaseES与MySQL的兼容性说明 — KingbaseES产品手册

1、表名冲突

人大金仓数据库中默认有一些表格,会与自己建的项目表名冲突,作者这里遇到了sys_user和sys_config这两个表。

处理方式有两种,一种是修改kingbase的配置,然后重启数据库,方式可以自行查阅。我这里为了不改变默认配置,自己修改了表名解决了冲突。

2、关键字

报错信息:CONNECT BY clause required in this query block

字段level是人大金仓的关键字,sql语句需要增加双引号,mybatis-plus可以在实体类增加注解。

    @TableField("\"level\"")
    private Integer level;
3、分组查询报错

报错信息:column "c.name" must appear in the GROUP BY clause or be used in an aggregate function

PGSQL的分组函数是比较严格,select字段必须得存在于group子句、或者聚合函数中才行。

原sql语句,会提示上面的错误信息。

SELECT
	b.id,
	c.name AS c_name 
FROM
	book b 
LEFT JOIN catalog c ON c.id = b.catalog_id 
WHERE
	is_delete = 0 
GROUP BY
	b.id

最简单的方式是增加个聚合函数:

SELECT
	b.id,
	MAX(c.name) AS c_name 
FROM
	book b 
LEFT JOIN catalog c ON c.id = b.catalog_id 
WHERE
	is_delete = 0 
GROUP BY
	b.id

五、注意事项

1、人大金仓数据库会默认把空字符串当作null处理,可以通过修改数据库关闭该情况。

在kingbase.config配置文件中修改ora_input_emptystr_isnull=off

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值