【问题标题】: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 上修复它?
标签:
c++
mysql
qt
arm
apple-m1
【解决方案1】:
原来的解决方案我有found here感谢原作者问答-chriam.
我将在这篇文章中描述原始解决方案中未提及的一些关键点。
-
你必须安装MySQL from Oracle cloud
-
使用QT maintenanceTool 并选择选项Add or remove components. 从列表中选择您当前的QT 版本并标记Sources,然后单击下一步并等待文件下载。
-
按照指令here to 安装ninja
-
在我的情况下,cd 到您的 Src 文件夹:cd /Users/lamens/Qt/6.3.2/Src
-
运行以下命令并等待它的complitaion ./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 文件夹。
-
瞧!