[英]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.