李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
工具
正文
MySQL迁移到达梦数据库
Leefs
2023-01-03 PM
3800℃
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
NLP
4
标签云
JavaSE
Nacos
Java阻塞队列
NIO
Typora
SpringCloudAlibaba
机器学习
FileBeat
Ubuntu
Kafka
Zookeeper
哈希表
数据结构和算法
Docker
Stream流
数据结构
Hadoop
Spark SQL
BurpSuite
DataX
Beego
Java
Filter
Jquery
HDFS
Hive
MyBatis
VUE
Spark RDD
散列
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭