簡體   English   中英

MySQL到PostgreSQL的遷移:mysql連接器

[英]MySQL to PostgreSQL migration: mysql connector

我正在嘗試從MySQL遷移到PostgreSQL,我有一個與Java相關的問題,我無法修復。 完全披露:我對Java知之甚少或一無所知,但遷移使用基於Java的腳本,因此對我而言,它成為一個配置問題。

問題的簡短版本:

遷移工具拋出此異常:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

mysql-connector-java-5.0.8-bin.jar已經在“JAVA_HOME \\ jre \\ lib \\ ext”目錄下了,我不知道如何解決這個依賴性問題。


長版問題:

我試圖從MySQL遷移到PostgreSQL。 我檢查了官方postgresql文檔,我選擇了entreprisedb的免費工具(可以在這里下載)開始遷移。

從安裝自述文件中,它們告訴您默認情況下未安裝mysql連接器,但它們也會告訴您解決此問題的步驟:

要啟用MySQL連接,請從以下網址下載MySQL免費提供的JDBC驅動程序: http//www.enterprisedb.com/downloads/third-party-jdbc-drivers

mysql-connector-java-5.0.8-bin.jar文件放在“JAVA_HOME \\ jre \\ lib \\ ext”目錄中(在我的例子中:“C:\\ Program Files \\ Java \\ jre1.8.0_60 \\ lib \\ ext \\ MySQL的連接器的Java-5.0.8-bin.jar“)。

正確配置工具並執行.bat后,這是我得到的錯誤:

Connecting with source MySQL database server...
MTK-11009: Error Connecting Database "MySQL Server"
DB-null: java.sql.SQLException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Stack Trace:
com.edb.MTKException: MTK-11009: Error Connecting Database "MySQL Server"
    at com.edb.dbhandler.mysql.MySQLConnection.<init>(MySQLConnection.java:48)
    at com.edb.common.MTKFactory.createMTKConnection(MTKFactory.java:250)
    at com.edb.MigrationToolkit.createNewSourceConnection(MigrationToolkit.java:5982)
    at com.edb.MigrationToolkit.initToolkit(MigrationToolkit.java:3346)
    at com.edb.MigrationToolkit.main(MigrationToolkit.java:1700)
Caused by: java.sql.SQLException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at com.edb.Utility.processException(Utility.java:327)
    at com.edb.dbhandler.mysql.MySQLConnection.<init>(MySQLConnection.java:47)
    ... 4 more  

...據我所知,這可能意味着找不到mysql-connector-java-5.0.8-bin.jar

我在網上找到的關於錯誤的所有鏈接都是針對Eclipse或其他IDE的,所以我還沒有能夠解決這個依賴性問題。

在掌握Java的朋友的幫助下,這是他實現的解決方案:

為了開始尋找問題,我們打開了runMTK.bat 執行行如下:

cscript //nologo "..\etc\sysconfig\runJavaApplication.vbs" "..\etc\sysconfig\edbmtk-49.config" "-Dprop=..\etc\toolkit.properties -classpath -jar edb-migrationtoolkit.jar %*"

然后我們打開了這個runJavaApplication.vbs ,為了知道程序正在使用的JAVA_EXECUTABLE_PATH ,我們將這一行添加到腳本中:

Wscript.Echo "JAVA_EXECUTABLE_PATH = " & JAVA_EXECUTABLE_PATH

有了這些信息,我們發現腳本正在使用C:\\Program Files (x86)下的Java文件夾,而不是C:\\Program Files下的那個(我刪除了mysql jar)。 所以我們將mysql-connector-java-5.0.8-bin.jar復制到x86的\\ext文件夾中,現在腳本可以工作了。

建議:腳本在一半導出的表中拋出錯誤,所以所有的麻煩可能都不值得。 但是,如果有人有興趣使這個遷移腳本從A到Z工作(這是一個相當大的挑戰),這里有詳細信息:


如何

免費工具(來自entreprisedb): http ://www.enterprisedb.com/downloads/postgres-postgresql-downloads

從zip文件中提取文件並以管理員ppasmeta-9.5.0.5-windows-x64.exe使用安裝程序( ppasmeta-9.5.0.5-windows-x64.exe )。

要啟用MySQL連接,請從以下位置下載MySQL免費提供的JDBC驅動程序:
http://www.enterprisedb.com/downloads/third-party-jdbc-drivers

mysql-connector-java-5.0.8-bin.jar文件放在“JAVA_HOME \\ jre \\ lib \\ ext”目錄中(在我的例子中:“C:\\ Program Files \\ Java \\ jre1.8.0_60 \\ lib \\ ext \\ MySQL的連接器的Java-5.0.8-bin.jar“)。

可以找到Migration Toolkit文檔:

首先:修改C:\\Program Files\\PostgresPlus\\edbmtk\\etc\\toolkit.properties這里的信息 ):

SRC_DB_URL=jdbc:mysql://SOURCE-HOST-NAME/SOURCE-DB-NAME
SRC_DB_USER=********
SRC_DB_PASSWORD=********

TARGET_DB_URL=jdbc:edb://localhost:5444/DESTINATION-DB-NAME
TARGET_DB_USER=enterprisedb
TARGET_DB_PASSWORD=********

然后:執行C:\\Program Files\\PostgresPlus\\edbmtk\\bin\\runMTK.bat此處為Info )。

runMTK.bat -sourcedbtype mysql -targetdbtype enterprisedb -allTables YOUR_DB_SCHEMA

// ...or with a limited subset of tables:

runMTK.bat -sourcedbtype mysql -targetdbtype enterprisedb -tables TABLE1,TABLE2,TABLE3 YOUR_DB_SCHEMA

為了從MySQL獲取這個表子集:

SELECT 
    GROUP_CONCAT(TABLE_NAME)
FROM
    information_schema.tables
WHERE
    TABLE_SCHEMA = 'your_db_name'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM