使用DTS從MySQL 8.0遷移到達夢數據庫

在使用DTS進行mysql8.0到dm7的數據遷移,選擇DTS中的數據源並連接時報錯。(使用默認驅動)

報錯信息:Unknown character set index for field '255' received from server.

該問題原因是MySQL版本高,mysql的jar版本低造成mysql與jar的編碼錯亂,也就是說默認的jar包版本過低。

於是指定對應mysql的新的驅動

再次指定新的驅動後仍然報錯

報錯信息:com/mysql/jdbc/Driver : Unsupported major.minor version 52.0

出現此問題的原因是jdk 版本與jdbc driver不兼容的問題,JDK的版本過低。jdk高版本能兼容低版本,但是低版本不能兼容高版本

查詢網上相關資料得知:

major.minor version,它相當於一個軟件的主次版本號,只是在這裏是標識的一個Java Class的主版本號和次版本號。

J2SE 8 = 52,

J2SE 7 = 51,

J2SE 6.0 = 50,

J2SE 5.0 = 49,

JDK 1.4 = 48,

JDK 1.3 = 47,

JDK 1.2 = 46,

JDK 1.1 = 45

也就是說需要jdk1.8環境,而通過客戶反饋的JDK版本情況,也是在使用JDK1.8

在達夢軟件安裝目錄下,有一個jdk目錄,達夢軟件運行都是使用的此jdk環境

 

解決辦法,更換DTS使用的JDK環境:

方法一:關閉DTS工具。將已經存在的jdk文件備份一下,把要求的JDK1.8的環境拷貝過來,並重命名爲jdk注意:此方法由於會替換整個達夢數據庫軟件的JDK,即便JDK是向上兼容的,仍可能存在一定風險

方法二:關閉DTS工具。進入達夢軟件安裝目錄的tool目錄,可以看到有一個dmt.ini文件,將此文件先備份,此處我備份爲dts_bak.ini

 

此時修改dts.ini文件,將原來使用的jdk更改爲所需要的jdk版本

即修改../jdk/bin爲新jdk目錄,我的目錄是C:\Program Files\Java\jdk1.8.0_221\bin

 

此時即完成了JDK的替換工作(此方法只更改了DTS使用的JDK版本,不會影響整個數據庫軟件)

-----------------------------------------------------------

經過以上方法更換DTS使用的JDK版本後,再次打開dts工具,配置連接數據源,指定驅動, 並自動獲取驅動類名

 

此時點擊下一步仍會報錯。

報錯信息:The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.

此錯誤主要是由於mysql8.0版本的使用的數據庫連接字符串不一樣,而且還對時區有要求,所以要勾選使用自定義URL選項,再引用下面的連接即可

url: jdbc:mysql://localhost:3306/<database_name>?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true

此時再點擊下一步就不會再報錯,即能成功連接到mysql8.0

目前已驗證MySQL 8.0.17和MySQL 8.0.19版本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章