QT Mac M1 解决 mysql driver not loaded 问题

一、系统环境

  • Mac M1 芯片 MacOS 12.3

  • Qt 6.4.2(已经勾选上source)

  • mysql 8 Arm 版本 (当前只有这一种版本,一定要安装这个版本,要不然下面cmake编译那步不会成功)

  • Qt 路径
    /Users/username/Qt/6.4.2/Src(高亮部分替换成自己的名称,下面会重复利用)

    如果Qt的版本、放置的位置和我不一致,这里也要替换成自己的名称和路径

  • mysql路径
    /usr/local/mysql

二、编译前安装步骤

Step1

在电脑上安装ninja,后面需要用ninja来进行编译。

可以参考该网址的4个步骤来进行安装。

三、编译步骤

Step1

打开terminal,输入下面的代码,进入Qt下的Src文件夹中。

cd /Users/username/Qt/6.4.2/Src

在这里插入图片描述

Step2

在Src文件夹的命令行,输入下面的代码。

./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="/usr/local/mysql/include" -DCMAKE_LIBRARY_PATH="/usr/local/mysql/lib"

在这里插入图片描述

在这里插入图片描述

Step3

输入下面的代码,进入编译后sqldrivers文件夹。

cd /Users/username/Qt/6.4.2/macos/plugins/sqldrivers

在这里插入图片描述

Step4

在sqldrivers文件夹路径下的命令行,运行下面的代码。

mkdir build_sqldrivers

cd build_sqldrivers

Step5

在build_sqldrivers文件夹路径下的命令行,执行下面的代码。

/Users/username/Qt/6.4.2/macos/bin/qt-cmake -G Ninja /Users/username/Qt/6.4.2/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/username/Qt/6.4.2/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" -DCMAKE_OSX_ARCHITECTURES="arm64"

在这里插入图片描述
在这里插入图片描述

Step6

接着执行下面的代码

sed -i -e 's/-arch x86_64/-arch arm64/g' /Users/username/Qt/6.4.2/macos/plugins/sqldrivers/build_sqldrivers/build.ninja

在这里插入图片描述

Step7

在build_sqldrivers文件夹路径下的命令行,执行下面的代码。

cmake --build .

在这里插入图片描述
接着执行下面的代码。

cmake --install .

在这里插入图片描述

Step8

在build_sqldrivers文件夹路径下的命令行,输入下面的代码,找到生成的位置

find ~/Qt -name libqsqlmysql.dylib

在这里插入图片描述

四、使用部分

Step1

将生成的编译文件libsqlmysql.dylib复制到sqldrivers文件夹中,即下面的路径下的文件夹。

cd /Users/username/Qt/6.4.2/macos/plugins/sqldrivers

请添加图片描述

Step2

打开Qt Creator中自己构建的mysql测试项目,没有的话,可以参考我这个。

#include <QApplication>
#include <QSqlDatabase>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qDebug()<<"drives: ";

    QStringList drivers = QSqlDatabase::drivers();  //获取现在可用的数据库驱动
    foreach(QString driver, drivers)
    qDebug() << driver;
    QSqlDatabase database = QSqlDatabase::addDatabase("QMYSQL");
    database.setHostName("127.0.0.1");
    database.setDatabaseName("test");
    database.setUserName("root");
    database.setPassword("123456");
    database.setPort(3306);
    if (database.open()) {
            qDebug() << "连接数据库成功";
    } else {
        qDebug() << "连接数据库失败";
    }
//    Widget w;
//    w.show();
    return a.exec();
}

在运行的时候,可能还会弹出下面的窗口。
请添加图片描述
这时候,需要先点击sqldrivers文件夹下的ibqsqlmysql.dylib,然后再打开设置,在安全性与隐私中允许运行该程序,成功后如下面第二个图所示。

在这里插入图片描述
在这里插入图片描述

Step3

再在Qt Creator中运行该程序,结果如下图所示。
在这里插入图片描述

💐💐💐恭喜,你也在Mac Arm版本中,完成了mysql驱动的编译。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值