【问题标题】:MysqldResource isn't working with MacOS CatalinaMysqldResource 不适用于 MacOS Catalina
【发布时间】:2019-11-28 10:18:18
【问题描述】:

自从我的操作系统升级到 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 上运行现有依赖项的方法?

【问题讨论】:

  • 在 google 中搜索“mac catalina bad cpu type”以获取尝试在 64 位设备上运行 32 位数据的一些线索。

标签: java mysql macos-catalina


【解决方案1】:

对于在 MacOS Catalina 上遇到相同问题的任何人,您可以关注我的 repo (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
  • 将 mvn 设置文件夹 ~/.m2/repository/mysql/mysql-connector-mxj-db-files/5.0.12/ 中的 jar 替换为您刚刚创建的 jar。

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

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

【讨论】:

    猜你喜欢
    • 2021-02-10
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多