在使用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版本