MysqldResource不适用于MacOS Catalina

时间:2019-11-28 10:18:18

标签: java mysql macos-catalina

自从将我的操作系统升级到Mac Catalina之后, 尝试运行以下命令时出现以下错误:

    MysqldResource mysqldResource = new MysqldResource(uri); // Uri - temp db dir
            mysqldResource.start("embedded-mysqld-thread-" + System.currentTimeMillis(), databaseOptions);

问题的根源似乎在于依赖项“ mysql-connector-mxj-db-files”具有32位格式的二进制文件,而catalina不再支持该文件。

这是我得到的错误:

    Exception in thread "embedded-mysqld-thread-1574931580040" com.mysql.management.util.WrappedException: java.io.IOException: Cannot run program "/private/var/folders/l5/4ywgvbbj1kvgvrwxzp6dz82c0000gn/T/test_db_24166997810717/bin/mysqld": error=86, Bad CPU type in executable
        at com.mysql.management.util.Exceptions.toRuntime(Exceptions.java:55)
        at com.mysql.management.util.Exceptions$Block.exec(Exceptions.java:89)
        at com.mysql.management.util.RuntimeI$Default.exec(RuntimeI.java:180)
        at com.mysql.management.util.Shell$Default.run(Shell.java:140)
        at java.lang.Thread.run(Thread.java:748)
    Caused by: java.io.IOException: Cannot run program "/private/var/folders/l5/4ywgvbbj1kvgvrwxzp6dz82c0000gn/T/test_db_24166997810717/bin/mysqld": error=86, Bad CPU type in executable
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
        at java.lang.Runtime.exec(Runtime.java:620)
        at com.mysql.management.util.RuntimeI$Default$1.inner(RuntimeI.java:177)
        at com.mysql.management.util.Exceptions$Block.exec(Exceptions.java:86)
        ... 3 more
    Caused by: java.io.IOException: error=86, Bad CPU type in executable
        at java.lang.UNIXProcess.forkAndExec(Native Method)
        at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
        at java.lang.ProcessImpl.start(ProcessImpl.java:134)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
        ... 6 more

有人知道mysql-connector-java的替代方法,还是知道在Mac OS Catalina上运行现有依赖项的方法?

1 个答案:

答案 0 :(得分:0)

对于在MacOS Catalina上存在相同问题的任何人,您都可以在我的仓库(https://github.com/pengyue/mysql-connector-mxj-mac-os-catalina)中阅读README.md,该仓库具有MacOS Catalina的64位可执行文件,并且此改进的连接器可在Catalina上使用。

要解释我做了什么:

  • 将MySQL的64位可执行文件下载到文件夹5-5-9
  • platform-map.properties中添加64位MacOS的平台映射
  • 使用jar cvf mysql-connector-mxj-db-files-5.0.12.jar .
  • 创建一个jar
  • 用您刚创建的jar替换mvn设置文件夹~/.m2/repository/mysql/mysql-connector-mxj-db-files/5.0.12/中的jar。

此解决方案适用于我的项目,不幸的是,我找不到mysql-connector-mxj的github,因为它已过时且不再可维护。

另一种选择是使用wix-embedded-mysql(https://github.com/wix/wix-embedded-mysql)代替mysql-connector-mxj,但这可能需要在项目中进行一些代码更改。