当我尝试在 Windows 中运行 MySQL 迁移工具包 GUI 时,我收到一条错误消息,指出未安装 Java。Java 已安装,但 Migration Toolkit 无法识别它。有谁知道如何解决这个问题?
4 回答
好吧,为了使它起作用,解决方案非常简单。转到您已安装 MySQL 迁移工具包的文件夹。为可执行文件MySQLMigrationTool.exe创建一个快捷方式,例如到您的桌面
然后右键单击您刚刚创建的快捷方式并在目标上像这样修改它
"C:\Program Files (x86)\MySQL\MySQL Migration Toolkit 1.0\MySQLMigrationTool.exe" -verbose -jvm **The Path to your 32bit jvm.dll**
例如,对于我使用jre1.8.0_45进行的安装是
"C:\Program Files (x86)\MySQL\MySQL Migration Toolkit 1.0\MySQLMigrationTool.exe" -verbose -jvm ***"C:\Program Files (x86)\Java\jre1.8.0_45\bin\client\jvm.dll"***
您真的应该尝试最新 MySQL Workbench 版本附带的新迁移向导。MySQL Migration Toolkit 已在几年前逐步淘汰,并且没有处于积极开发中。
有关迁移向导的教程,请查看How-To: Guide to Database Migration from Microsoft SQL Server using MySQL Workbench。
无论如何,如果仍然有人在 MySQL Migration Toolkit 和 jre 1.8 上苦苦挣扎,我建议停止打扰,因为通过设置 jvm.dll 修复启动后,它无法执行反向工程步骤并显示以下消息:
The schema could not be reverse engineered (error: 0).
ReverseEngineeringAccess.reverseEngineer :sun.jdbc.odbc.JdbcOdbcDriver
Details:
java.net.URLClassLoader.findClass(Unknown Source)
java.lang.ClassLoader.loadClass(Unknown Source)
sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
java.lang.ClassLoader.loadClass(Unknown Source)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Unknown Source)
com.mysql.grt.modules.ReverseEngineeringGeneric.establishConnection(ReverseEngineeringGeneric.java:84)
com.mysql.grt.modules.ReverseEngineeringAccess.reverseEngineer(ReverseEngineeringAccess.java:92)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.mysql.grt.Grt.callModuleFunction(Unknown Source)
我让该工具运行并迁移了大部分表,但对结果不满意,因为许多表创建失败。它仍然很有用,因为我得到了脚本,以便我以后可以编辑它。我使用了这些版本
迁移工具包 1.0.25
IBM JRE 5.0(我在系统中有这个) - 必须按照约翰提到的那样设置 JVM。
为您的数据库使用 Oracle JDBC 驱动程序(12c ojdbc8),但必须将其重命名为 ojdbc14.jar 并使用。
从 MySQL Migration Toolkit 1.0\java\lib 中删除 mysql-connector-java-3.1... 文件(3 个文件)并放置 mysql-connector-java-5.1.44.jar
运行该工具。
我为 MySQL 用户使用了 mysql_native_password:- ALTER USER 'mysqluser'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';