项⽬国产化,mysql替换为神通数据库记录
1、背景
项⽬中mysql数据库要替换成神通数据库;库中的表有部分是内置数据,即项⽬安装部署后库、表要已经创建完成,并且部分表⾥要有内置数据,项⽬启动要能根据实体类动态更新表结构(为了⽅便升级、运维)
2、基本流程
2.1 安装使⽤神通数据库
由于资源匮乏,暂时只有windows 10版神通数据库,数据库安装好后会⽣成⼀个⽂件夹,⽂件夹内有⼀系列操作神通数据库的⼯具(创建数据库的⼯具、数据迁移的⼯具、管理⼯具等)
2.2 创建库、启动
mysql连接工具神通安装后⾃带的数据库配置⼯具来创建⼀个数据库,并在服务中开启此数据库服务(具体操作可搜索神通数据库使⽤教程)
2.3 数据迁移
使⽤神通数据迁移⼯具,将项⽬中mysql数据库的结构及数据(包括表、约束、数据等)迁移到神通数据库。
2.4 数据导出
使⽤神通的SQL交互⼯具将迁移好的神通数据库⾥⾯的表结构以及表数据导出.sql脚本⽂件
2.5脚本修改
导出的.sql脚本类似mysql导出的脚本,但是要改写东西。脚本中建表语句下⾯会有创建索引及约束的语句,导出的pk都是⼤写且不带双引号,需要把pk修改为⼩写并加上双引号;不然执⾏报错。
3.注意点
3.1 .sql脚本导出导⼊问题
使⽤神通数据库⼯具导出的.sql脚本再使⽤⼯具导⼊会报错,⽬前我是采⽤执⾏语句的⽅法来建表(命令⾏导⼊.sql脚本未尝试)
如果执⾏的话,就有建表语句的顺序的问题,假如a表建表时关联了b表,那就要先把b表先建好
3.2 主键⾃增问题
神通的sql中,主键可以⾃增,但是项⽬的实体中,id的strategy设置为GenerationType.IDENTITY会报错,不⽀持⾃增。但是如果先建好表,项⽬中实体⽤identity不会报错(由于不利于后期升级与维护,故舍弃),暂时⽤sequence代替主键⾃增的功能,每⼀个实体的id都创建⼀个sequence
3.3 连接池
项⽬中之前数据库连接池使⽤的alibaba的,但是看了alibaba的连接池源码暂时不⽀持神通,所以就⽤的⾃带的连接池
3.4 项⽬中⾃定义sql查询
项⽬中如果有⾃定义sql,即nativeQuery查询,表前要加schema,采⽤库.表,例如mysql查询:select * from user;神通中要写select * from test.user 。test为库名。
3.5 部分函数⽀持
神通的函数不⽀持find_in_set(),可以⽤local()函数替代;like查询时,如果表中某个字段类型是数字类型,查询时要使⽤cast()函数把字段它转为varchar。(在sql⼯具上写sql语句时可以的,但是项⽬中
⽤的神通数据库驱动不⽀持此查询)例如:telNum(电话号码)字段为int型mysql查询:select * from user where telNum like ‘135%’; 神通查询要改为:select * from user where cast(telNum as
varchar(10)) like ‘135%’;
⽬前还在适配中,后续问题会更新

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。