Springboot项目从MySQL到KingBase迁移需要注意的问题

数据库迁移

1、安装Kingbase时一定要确认是否大小写敏感。

2、使用Kingbase数据库自带的迁移工具进行数据库迁移,里面设置的很细致,最好不要用别的软件迁移。

Springboot项目

1、核心依赖(官网可下载人大金仓-成为世界卓越的数据库产品与服务提供商 (kingbase.com.cn))


    com.kingbase8
    kingbase8
    8.6.0

2、配置文件

  datasource:
    driver-class-name: com.kingbase8.Driver
    url: jdbc:kingbase8://localhost:54321/(数据库名)?currentSchema=(模式名)
    username: root
    password: 123

pagehelper:
  helperDialect: postgresql

Kingbase中每个库有不同的模式,这里可以使用currentSchema定义你使用的模式(会避免很多问题),端口号,用户名和密码写自己的。配置文件中相关SQL的部分都替换为Kingbase相关的配置。

3、触发器

如果实例化对象类(Po类)原本项目中采用的是触发器实现主键自增,迁移后需要更改。

如果主键是UUID改成(注释为MySQL数据库的语句):

@Table(name = "kk")
@Data
public class KkPo{

	@ExcelProperty("")
	@Column(name = "id")
	@Id
//	@KeySql(sql = "select uuid()", order = ORDER.BEFORE)
	@KeySql(sql = "select LOWER(sys_guid()) from dual;", order = ORDER.BEFORE)
	private String id;
}

如果主键是自增可以改成:

@ExcelProperty("")
	@Column(name = "id")
	@Id
//	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@KeySql(sql = "CREATE SEQUENCE if not EXISTS (序列名随便取) Start  with 1 INCREMENT by 1;SELECT (前面取的序列名).nextval;", order = ORDER.BEFORE)
	private Integer id;

这里第二种主键自增的情况在Kingbase数据库中,需创建自增序列,然后进入取值。如果迁移数据库中已有数据。可以将Start With 后面的数字调整到不会重复的大小。

4、迁移的表格中如果有sys_xxxxx形式的表格,可能会和Kinbgbase自带表格重名,不指定查询模式时会查串。查询时可以添加模式名,a为模式名(注意不是数据库名)。

select  * from a.sys_user

5、如果在Mapper中查询语句使用了!=null 或 !='',换成is not null。(注意,只有SQL语句部分替换,标签中不用替换)

6、时间格式函数据替(Kingbase中没有date_format函数)。

// date_format(create_time, "YYMMdd")
to_char(to_date(create_time),'YYMMdd')

 7、bit类型数据比较。a为bit类型数据。

// select * from tab1 where a = 1
select * from tab1 where a = '1'

这里‘1’是未使用#{}符号直接写入的数字,会报错。这里有可能会出现在筛选逻辑删除等场景,建议进行排查。

你可能感兴趣的:(mysql,数据库)