未在 Mac OS 上为 Mac M1/M2 用户加载 QMYSQL 驱动程序

分享于2022年10月08日 apple-m1 arm c++ mysql qt 问答
【问题标题】:QMYSQL driver not loaded on Mac OS for Mac M1/M2 users未在 Mac OS 上为 Mac M1/M2 用户加载 QMYSQL 驱动程序
【发布时间】:2022-09-30 20:05:02
【问题描述】:

当我运行以下代码时:

    QSqlDatabase db = QSqlDatabase::addDatabase(\"QMYSQL\");
    db.setHostName(\"localhost\");
    db.setDatabaseName(\"SecureChat\");
    db.setUserName(\"root\");
    db.setPassword(\"zTmUHsbEKZZlWhfofM\");
    bool ok = db.open();

    qDebug() << db.lastError();

我收到错误: QT/C++ QSqlDatabase: QMYSQL driver not loaded on OSx

如何在 Mac m1 上修复它?


【解决方案1】:

原来的解决方案我有 found here 感谢原作者问答- chriam.

我将在这篇文章中描述原始解决方案中未提及的一些关键点。

  1. 你必须安装 MySQL from Oracle cloud

  2. 使用 QT maintenanceTool 并选择选项 Add or remove components. 从列表中选择您当前的QT 版本并标记 Sources ,然后单击下一步并等待文件下载。

  3. 按照指令 here to 安装 ninja

  4. 在我的情况下, cd 到您的 Src 文件夹: cd /Users/lamens/Qt/6.3.2/Src

  5. 运行以下命令并等待它的complitaion ./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="/usr/local/mysql/include" -DCMAKE_LIBRARY_PATH="/usr/local/mysql/lib"

  6. cd 在我的情况下到您的 sqldrivers 文件夹: cd /Users/lamens/Qt/6.3.2/macos/plugins/sqldrivers

  7. 运行 mkdir build_sqldrivers ,然后运行 cd build_sqldrivers

  8. 运行命令: /Users/<user>/Qt/<qt_version>/macos/bin/qt-cmake -G Ninja /Users/<user>/Qt/<qt_version>/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/<user>/Qt/<qt_version>/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" -DCMAKE_OSX_ARCHITECTURES="arm64 <user> 是您的系统用户, <qt_version> 是您的 QT 版本:D。

  9. sed -i -e 's/-arch x86_64/-arch arm64/g' /Users/<user>/Qt/<qt_version>/macos/plugins/sqldrivers/build_sqldrivers/build.ninja 如果失败,请在 build.ninja (位于 build_sqldrivers 文件夹中)文件中将所有出现的 arch x86_64 更改为 arch arm64

  10. build_sqldrivers 文件夹 cmake --build . 运行

  11. build_sqldrivers 文件夹 cmake --install . 运行

  12. 然后使用: find ~/Qt -name libqsqlmysql.dylib 定位您的库并将新生成的 libqsqlmysql.dylib 移动到 /Users/<user>/Qt/<qt_version>/macos/plugins/sqldrivers 文件夹。

  13. 瞧!

【讨论】: