QMYSQL驱动程序未加载到适用于Mac M1/M2用户的Mac OS上



当我运行以下代码时:

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上修复它?

感谢问答的原作者chriam.,我在这里找到了原始解决方案

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

  1. 您必须从Oracle云安装MySQL

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

  3. 按照此处的说明安装ninja

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

  5. 运行以下命令并等待其在./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. 哇!

最新更新