首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL到PostgreSQL迁移: mysql连接器

MySQL到PostgreSQL迁移: mysql连接器
EN

Stack Overflow用户
提问于 2016-07-25 12:35:11
回答 1查看 1.8K关注 0票数 4

我正在尝试从MySQL迁移到PostgreSQL,并且我有一个与Java相关的问题,我无法修复。完全公开:我对Java知之甚少,但迁移使用的是基于Java的脚本,因此对我来说,它成为了一个配置问题。

问题的简短版本:

迁移工具抛出此异常:

代码语言:javascript
复制
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连接,请从:http://www.enterprisedb.com/downloads/third-party-jdbc-drivers下载MySQL的免费JDBC驱动程序 将mysql-connector-java-5.0.8-bin.jar文件放在"JAVA_HOME\jre\lib\ext“目录中(在我的示例中:"C:\Program”)

在正确配置该工具并执行.bat之后,我会得到以下错误:

代码语言:javascript
复制
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  

据我理解,...which可能意味着找不到mysql-connector-java-5.0.8-bin.jar

我在网上找到的关于错误的所有链接都是针对Eclipse或其他IDE的,所以我还无法解决这个依赖问题。

EN

回答 1

Stack Overflow用户

发布于 2016-07-25 14:27:30

溶液

在掌握Java的朋友的帮助下,这是他实现的解决方案:

为了开始寻找问题,我们打开了runMTK.bat。执行行内容如下:

代码语言:javascript
复制
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,我们将这一行添加到脚本中:

代码语言:javascript
复制
Wscript.Echo "JAVA_EXECUTABLE_PATH = " & JAVA_EXECUTABLE_PATH

有了这些信息,我们发现脚本使用的是C:\Program Files (x86)下的Java文件夹,而不是C:\Program Files下的那个(在这里我删除了mysql )。所以我们将mysql-connector-java-5.0.8-bin.jar复制到x86的\ext文件夹中,现在脚本可以工作了。

忠告:脚本正在将错误抛到一半的导出表中,所以所有的麻烦可能都不值得。但是,如果有人有兴趣让这个迁移脚本从A到Z工作(这是一个相当大的挑战),下面是细节:

如何实现

免费工具(来自企业b):http://www.enterprisedb.com/downloads/postgres-postgresql-downloads

从zip中提取文件,并使安装程序(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”)

“移徙工具包”文件可查到:

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

代码语言:javascript
复制
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 (这里的信息)。

代码语言:javascript
复制
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获取表的这一部分:

代码语言:javascript
复制
SELECT 
    GROUP_CONCAT(TABLE_NAME)
FROM
    information_schema.tables
WHERE
    TABLE_SCHEMA = 'your_db_name'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38567970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档