Springboot項目mysql遷移達夢數據庫


  由於國產化項目跟進,數據庫指定使用達夢數據庫(簡稱DM),項目本身使用mysql,於是切換數據庫的需求產生了。

一、MySQL數據庫表遷移到DM

使用達夢數據遷移工具,新建工程-新建遷移-配置mysql連接

 配置好達夢數據庫連接后下一步,在指定對象復制時,目的模式一定要使用SYSDBA,要不然項目就要重構,在每個select語句表前都加模式名,非常麻煩(踩坑記見底部)。

 然后就下一步、執行就行了,使用dump、sql腳本導入類似。

二、整合DM驅動到spring項目中

1,DM的驅動就在DM的安裝目錄下,根據說明文件,使用對應版本的即可。

 2,DM的驅動沒有在maven倉庫目錄中,新建一個lib目錄,把驅動包放進來

使用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?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
 username: SYSDBA password: 123456789

 四、問題記錄

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

很明顯activity不支持達夢數據庫,所以這個國產化項目中不能使用activity了。

2,Cause: dm.jdbc.driver.DMException: 第1 行附近出現錯誤

達夢數據庫查表方式: select * from "庫名"."模式名"."表名",沒有指定表?可是在配置連接時已經制定了表了啊。原來,DM的數據庫和mysql的數據庫管理方式不同,DM是以類似sqlserver的方式--實例的方式管理多個庫。

 這里DM的模式,不代表mysql中的庫,要創建DM的庫(實例),要使用DM的數據庫配置助手新建一個端口號不同的實例

 否則,目前連接到的這個庫使用SYSDBA這個模式下的表,要使用自定義新建的CENTERBUSINESS下的表,需要在sql中加上模式名:select * from 模式名.表名。而項目中mybatis生成的sql是不帶模式名的,所以報錯。因為目前mybatis還沒有提供統一添加模式名的配置,因此只能去所有的mapper文件中在每一個sql中的表名前添加模式名,這不現實。因此,我們要把所有表導到SYSDBA這個模式下,以前mysql的多個庫就多建幾個DM實例,目前只有這樣處理比較合適。

原來配置文件的URL:

jdbc:dm://172.19.45.26:5236/CENTERBUSINESS?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8

其中CENTERBUSINESS為模式名,DM不支持這樣配!於是從新使用達夢數據遷移工具導入表到SYSDBA模式下。

配置文件URL修改為:

jdbc:dm://172.19.45.26:5236/SYSDBA?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8(SYSDBA為庫名,也可不寫,默認就是)

再次啟動項目,啟動成功!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM