Mac 平台下 QT sql load drivers 问题

Mac 平台下装qt环境想对比较简单,在官网上下载qt的环境包,注册一个免费的账号,然后直接开始setup,中途可以选装iOS和安卓平台等等。安装完成后,可以在目录下找到qt creator.app 直接拖到Applications里面就可以开始qt编程了;

 

UI界面有点iOS和wpf的影子,需要时间来熟悉和适应,使用没什么大问题;

 

再一个就是槽和信号机制,暂时不关注;

 

下面主要记录下Mac平台qt的sql驱动装载。

 

    ui->setupUi(this);

    qDebug() << QSqlDatabase::drivers();//打印qt支持的数据库类型

    setWindowTitle("SQL");//设置窗口的标题

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setDatabaseName("dbforqt");
    db.setUserName("root");
    bool ret = db.open();

    if(!ret) //如果数据库打开失败,会弹出一个警告窗口
    {
        QMessageBox::warning(this, "警告", "数据库打开失败");
        qDebug()<<db.lastError();
    }
    else
    {
        ui->textEdit->setText("数据库打开成功");
    }

这段代码运行后,出现错误提示:QMYSQL driver not loaded

百度是指望不上的,数据太难搜索,基本都是垃圾,通过关键词把你吸引进来,一看并没什么用;

在结合一篇博客和qt官网的教程,需要直接编译相关的driver lib,Windows下的教程很多,Mac却没几个(再次显示关键词搜索的重要性)

 

//setep 1:
cd $QTDIR/Src/qtbase/src/plugins/sqldrivers
qmake -- MYSQL_PREFIX=/usr/local/mysql   #这里的qmake要使用qt自带的

//step 2:
make sub-mysql

//step 3:
qmake

//step 4:
make install

//step 5:
cd $QTDIR/clang_64/plugins/sqldriver
otool -L libqsqlmysql.dylib

//step 6:
install_name_tool -change /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib /usr/local/Cellar/mysql/8.0.19/lib/libmysqlclient.21.dylib libqsqlmysql.dylib

注意:QTDIR为Mac上安装qt的目录,这里缩写指代

在刚刚安装完qt的时候,使用qmake会出现错误如下:

zsh: command not found: qmake

同样,网上一大堆,都是说环境变量没配好,但是解决方法又是基本没一个能说清楚的(我搜索的结果)

//打开terminal
 sudo vi ~/.bash_profile

//按i进入编辑模式
//输入
export QTDIR=/Users/channe/Qt5.14.1/5.14.1/clang_64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
export PATH=$PATH:$QTDIR/bin
//QTDIR为电脑上qt安装目录下的clang_64文件加路径

//esc,然后输入冒号,输入wq保存并退出

source ~/.bash_profile//是文件生效

qmake -v //查看qmake版本,如果出现版本则基本证明配置成功了没问题


qmake问题解决~

 

step 6 中的路径需要注意几点,install_name_tool -change /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib /usr/local/Cellar/mysql/8.0.19/lib/libmysqlclient.21.dylib libqsqlmysql.dylib

step5 之后在qt的安装目录下,我的目录是(/Users/channe/Qt5.14.1/5.14.1/clang_64/plugins/sqldrivers)应该会生成libqsqlmysql.dylib,绿色目录是本地mysql的安装路径,我是用brew安装的,所以在/usr/local/Cellar

至此~Mac平台的qt数据库驱动安装成功

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setDatabaseName("dbforqt");
    db.setUserName("root");
    bool ret = db.open();

这段代码要注意,database要自己去创建,要么用sql客户端,要么命令行,我是用命令行创建”dbforqt“这个数据库,所以才能连上,很多地方只上了代码,根本没有说数据库需要自己创建,最开始还以为是直接创建。

最后run一下代码,open成功~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章