李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
工具
正文
MySQL迁移到达梦数据库
Leefs
2023-01-03 PM
2515℃
0条
[TOC] ### 前言 本次通过SpringBoot+MyBatisPlus架构,将MySQL数据库替换成国产达梦数据库。 > 注意:此次改造的项目同时兼容MySQL和达梦数据库。 ### 一、部署注意事项 因为MySQL是大小写不敏感的,DM数据库支持大小写敏感和不敏感,默认是大小写敏感。 在进行**数据库初始化参数**设置时,记得将【字符串比较大小写敏感】的勾给去掉。 ![02.MySQL改造达梦数据库01.png](https://lilinchao.com/usr/uploads/2023/01/1090280572.png) 注意:初始化完成之后该参数是不支持再次修改的,切记去掉。 ### 二、数据迁移 > MySQL迁移到达梦数据库 > > 达梦官方文档:https://eco.dameng.com/document/dm/zh-cn/start/dm-create-tablespace.html > > 达梦的官方文档已经讲解的很清楚了,在此只列出整个迁徙的步骤,不在进行详细赘述 #### 2.1 迁移前准备 **步骤一**:创建表空间 ![02.MySQL改造达梦数据库02.png](https://lilinchao.com/usr/uploads/2023/01/1035783395.png) > 注意点 **(1)文件路径** 文件路径是必填项,建议改成`初始化文件数据地址/表空间名.DBF` **示例** ``` /opt/dmdbms/data/DAMENG/TEST.DBF ``` > **/opt/dmdbms/data/DAMENG**:初始化时对应的路径,不知道可以看初始化后已有的表空间 > > **TEST**:文件名,英文 **(2)文件大小的设置** 如果设置的过小,在后期同步数据时很容易出现因为数据过大,同步失败的问题。具体的选择可以参考官方文档。 **步骤二:创建用户并关联表空间** **步骤三:给创建的用户授权** #### 2.2 从MySQL迁移到DM **通过DM数据迁移工具进行迁移** 具体的可查看官方文档:https://eco.dameng.com/document/dm/zh-cn/start/migrate-mysql-dm.html ### 三、SpringBoot整合达梦数据库 官方文档地址:https://eco.dameng.com/document/dm/zh-cn/start/java-development.html #### 3.1 引入Maven依赖 **方式一:远程下载依赖** ```xml
com.alibaba
druid-spring-boot-starter
1.2.8
com.dameng
dm-jdbc
1.8
aliyun
aliyun Repository
http://maven.aliyun.com/nexus/content/groups/public
false
dc
dc Repository
http://119.96.92.173:8181/repository/maven-releases/
false
``` 本人通过该种方式没有下载下来dm8的驱动包。 **通过Maven命令将驱动包打入到本地** > cmd执行如下命令 ``` mvn install:install-file -DgroupId=com.dameng -DartifactId=dm-jdbc -Dversion=1.8 -Dpackaging=jar -Dfile=D:\Tools\dms\DmJdbcDriver18.jar ``` + `-Dfile`为本地下载好的驱动包地址。 **方式二:通过本地引入依赖** > 如果驱动包报错,可以在本地的安装目录 dmdbms8/drivers/jdbc 下找到对应的驱动包 DmJdbcDriver18.jar,复制到项目的lib目录,再加入到maven依赖中。 ```xml
com.dameng
dm-jdbc
1.8
system
${project.basedir}/lib/DmJdbcDriver18.jar
``` **方式三:通过Maven私服来下载依赖** 将驱动包上传到公司Maven私服中,以后使用通过私服来下载依赖。 #### 3.2 配置数据库连接信息 在 application.yaml配置连接信息如下: ```yaml ## DM数据库数据源信息配置 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: # 初始连接数 initialSize: 5 # 最小连接池数量 minIdle: 5 # 最大连接池数量 maxActive: 10 stat-view-servlet: enabled: true loginUsername: admin loginPassword: 123456 allow: web-stat-filter: enabled: true driver-class-name: dm.jdbc.driver.DmDriver url: jdbc:dm://127.0.0.1:5236/?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&clobAsString=true username: TEST password: 123456 validationQuery: SELECT 1 FROM DUAL #mybatis配置 mybatis-plus: mapper-locations: classpath:mybatis/*.xml typeAliasesPackage: com.lilinchao.mybaitsplus.pojo # 配置包别名 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启控制台sql输出 map-underscore-to-camel-case: true #开启驼峰大小写自动转换 # 返回类型为Map,显示null对应的字段 call-setters-on-nulls: true global-config: # 关闭MP3.0自带的banner banner: false db-config: # 配置MyBatis-Plus的主键策略 id-type: auto # 默认数据库表下划线命名 table-underline: true ``` + **`clobAsString=true`作用?** 将DM中的clob类型,也就是MySQL中的text类型转换成String类型。 如果不配置在查询的时候会报错。 #### 3.3 编写测试代码 创建一个测试使用的控制器类 DbController.java。 ```java package com.lilinchao.mybatisplus.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController public class DbController { /** * 注入 jdbcTemplate 模板对象 */ @Autowired private JdbcTemplate jdbcTemplate; @GetMapping("/queryDbVersion") public List queryDbVersion() { return jdbcTemplate.queryForList( "SELECT banner as 版本信息 FROM v$version"); } } ``` #### 3.4 验证连接是否成功 启动应用程序,在浏览器上访问 `http://localhost:8080/queryDbVersion` 如果返回如下信息(数据库版本信息),则表示连接成功。 ``` [{"版本信息":"DM Database Server 64 V8\n"},{"版本信息":"DB Version: 0x7000a"}] ``` ### 四、SQL不兼容问题总结 **问题一** > DATE_ADD 函数报错,返回一个日期或时间值加上一个时间间隔的时间值 > > **可能原因**:达梦不兼容 DATE_ADD,示例:SELECT DATE_ADD(‘2020-07-12 12:20:30’,INTERVAL ‘2’ DAY); > > **解决方案**:使用 ADD_DAYS 函数替换,示例:SELECT add_days(‘2020-07-12 12:20:30’,2); 由于系统要同时兼容MySQL和国产数据库,本人更愿意写一个Java工具类,来实现DATE_ADD函数所具备的功能。 **问题二** > SQL语句中不能使用反引号``’ > > **可能原因**:达梦不支持反引号 **问题三** > 报错dm.jdbc.driver.DMException: 无效的列 ![02.MySQL改造达梦数据库03.jpg](https://lilinchao.com/usr/uploads/2023/01/1322994425.jpg) + 去掉**`mapper.xml`**文件自增属性配置 ``` useGeneratedKeys="true" keyColumn="id" keyProperty="id" ``` 目前就到这了,如果发现其它问题,还会继续同步更新。
标签:
MyBatis-Plus
,
国产数据库改造
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/2729.html
上一篇
01.Nacos介绍
下一篇
02.Nacos作为服务注册中心演示
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
Jenkins
SQL练习题
JavaScript
Java阻塞队列
Kibana
Ubuntu
NIO
nginx
Thymeleaf
国产数据库改造
Docker
HDFS
数据结构和算法
随笔
Spark SQL
JavaWEB项目搭建
MyBatis-Plus
JVM
Java工具类
二叉树
Netty
MyBatis
并发编程
并发线程
Spark Core
队列
持有对象
设计模式
工具
Linux
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞