Java Spring项目mysql迁移达梦数据库

  由于国产化项目跟进,数据库指定使用达梦数据库(简称DM),项目本身使用mysql,于是切换数据库的需求产生了。

一、整合DM驱动到spring项目中

1,DM的驱动就在DM的安装目录下,根据说明文件,使用对应版本的即可。

Java Spring项目mysql迁移达梦数据库

 2,一般将驱动整合到项目中来,直接添加maven坐标即可,但是DM的驱动没有在maven仓库目录中。

新建一个lib目录,把驱动包放进来

Java Spring项目mysql迁移达梦数据库

使用maven的scope本地导入方式

<!--DM JDBC驱动 -->
<dependency>
    <groupId>dm.jdbc</groupId>
    <artifactId>DmJdbcDriver</artifactId>
    <version>18</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/DmJdbcDriver18.jar</systemPath>
</dependency>

当scope为system的时候打包不会自动打包进去的,所以要添加一个参数才能打包进去的

1 <plugin>
2   <groupId>org.springframework.boot</groupId>
3   <artifactId>spring-boot-maven-plugin</artifactId>
4   <configuration>
5     <includeSystemScope>true</includeSystemScope>
6   </configuration>
7 </plugin>

 二、spring项目配置文件修改

spring:
  application:
    name: demo
  datasource:
    driver-class-name: dm.jdbc.driver.DmDriver
    url: jdbc:dm://172.19.45.26:5236/centerbusiness?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
    username: SYSDBA
    password: 123456789

 三、问题记录

1,couldn't deduct database type from database product name 'DM DBMS'

Java Spring项目mysql迁移达梦数据库

很明显activity不支持达梦数据库,所以这个国产化项目中不能使用activity了。

2,Cause: dm.jdbc.driver.DMException: 第1 行附近出现错误

Java Spring项目mysql迁移达梦数据库

 达梦数据库查表方式: select * from "库名"."模式名"."表名",没有指定表?可是在配置连接时已经制定了表了啊。

原来,DM的数据库和mysql的数据库管理方式不同,DM是以类似sqlserver的方式--实例的方式管理多个库。

Java Spring项目mysql迁移达梦数据库Java Spring项目mysql迁移达梦数据库

 这里DM的模式,不代表mysql中的库,要创建DM的库(实例),要使用DM的数据库配置助手新建一个端口号不同的实例

Java Spring项目mysql迁移达梦数据库

 否则,目前连接到的这个库使用SYSDBA这个模式下的表,要使用自定义新建的CENTERBUSINESS下的表,需要在sql中加上模式名:

select * from 模式名.表名

而项目中mybatis生成的sql是不带模式名的,所以报错。

因为目前mybatis还没有提供统一添加模式名的配置,因此只能去所有的mapper文件中在每一个sql中的表名前添加模式名,这不现实。

因此,我们要把所有表导到SYSDBA这个模式下,以前mysql的多个库就多建几个DM实例,目前只有这样处理比较合适。

使用达梦数据迁移工具导入表到SYSDBA模式下后,配置文件修改为

spring:
  application:
    name: demo
  datasource:
    driver-class-name: dm.jdbc.driver.DmDriver
    url: jdbc:dm://172.19.45.26:5236/SYSDBA?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
    username: SYSDBA
    password: 123456789

启动成功!

Java Spring项目mysql迁移达梦数据库 

上一篇:第二章 ClickHouse进行数据库同步


下一篇:DM数据库两节点MPP主备搭建过程