当我运行以下代码时:
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.
,我在这里找到了原始解决方案
我将在这篇文章中描述一些原始解决方案中没有提到的关键点。
-
您必须从Oracle云安装MySQL
-
使用
QT maintenanceTool
并从列表中选择选项Add or remove components.
,选择当前QT版本并在Sources
上打上标记,然后单击下一步并等待文件下载。 -
按照此处的说明安装
ninja
-
在我的情况下,
cd
到您的Src文件夹:cd /Users/lamens/Qt/6.3.2/Src
-
运行以下命令并等待其在
./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="/usr/local/mysql/include" -DCMAKE_LIBRARY_PATH="/usr/local/mysql/lib"
上的编译 -
cd
到您的sqldrivers文件夹,在我的情况下:cd /Users/lamens/Qt/6.3.2/macos/plugins/sqldrivers
-
运行
mkdir build_sqldrivers
,然后运行cd build_sqldrivers
-
运行命令:
/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。 -
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
。 -
在
build_sqldrivers
文件夹cmake --build .
上运行 -
在
build_sqldrivers
文件夹cmake --install .
上运行 -
然后使用:
find ~/Qt -name libqsqlmysql.dylib
定位您的库,并将新生成的libqsqlmysql.dylib
移动到/Users/<user>/Qt/<qt_version>/macos/plugins/sqldrivers
文件夹中。 -
哇!