「Qt」 mac环境配置qt的mysql驱动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「Qt」 mac环境配置qt的mysql驱动相关的知识,希望对你有一定的参考价值。

参考技术A

Qt项目里用到了mysql,运行后报错:

查阅资料知道需要配置mysql驱动,本以为几分钟解决的事情,没想到开启了恶魔经历,整整两天时间,mmp!

Stop! 废话别说啦,入正题:
首先,Qt & mysql的安装和环境配置就略了,一搜一大把。
不过注意两点:

先进入到/Users/ing/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers目录下,执行:

这里确保qmake用的qt里的就行
其实你可以配置下qt相关的环境变量,在bash_profile里添加:

然后,source ~/.bash_profile ,还有别忘了 source ~/.zshrc

执行成功的话会输出:

根据提示 依次执行:

make sub-mysql

make

make install

进入/Users/ing/Qt5.14.2/5.14.2/clang_64/plugins/sqldrivers下执行,查看链接库:

输出:

此时,运行qt程序 依旧报错。

根据查阅的资料,问题出在

网友们所说的“诡异”的路径那一行(你的输出可能和我的不一样的,但问题应该一样) ,也就是有 libmysqlclient.21.dylib 这行。
另外查了下 @repath 的含义 意思是说 不能明确的指向。。。所以 这里就需要将libmysqlclient.21.dylib 指向扳到正确的道路。
方法就是利用 install_name_tool -change

执行

这里一定要注意顺序,刚开始我就是顺序搞错了,死活就是不行,最后跑到官方论坛里用蹩脚的英语发帖求教也无果,最后还是一遍的重试,一遍的检查才发现的。一天就这么浪费了。

此刻在运行qt程序 ,就不会再报上面的错误了。

撒花,礼花搞起~~~

QTMysqlMySQL安装及QT连接MySQL驱动编译操作步骤

文章目录

MySQL安装

 

1、下载

MySQL官网: https://dev.mysql.com/downloads/mysql/.

下载安装包时,需要根据自身需求选择x86(win32)或win64

MySQL版本的选择及对应,MySQL 7因为功能齐全,是普遍使用最多的版本,我下载的是mysql-5.7.30-winx64.zip,需要自行初始化安装

MySQL 5.5MySQL 5
MySQL 5.6MySQL 6
MySQL 5.7MySQL 7
MySQL 8.0MySQL 9

 

2、解压

原始的目录结构下的文件如下所示


 

3、添加环境变量

将bin目录添加,环境变量->path


 

4、创建my.ini文件及data文件夹

data文件夹为空,不添加任何东西

创建my.txt,将.txt改为.ini,修改my.ini文件,加入一下内容

[mysqld]
# 设置服务端口为3306
port=3306
# 设置mysql的安装目录,注意目录需要使用\\\\连接
basedir=D:\\mysql-5.7.30-winx64
# 设置mysql数据库的数据的存放目录,注意目录需要使用\\\\连接
datadir=D:\\mysql-5.7.30-winx64\\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10000
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

 

5、命令提示符初始化MySQL及修改密码

管理员模式打开命令提示符,进入bin目录

输入 mysqld --initialize --console
初始化MySQL,并将初始化信息打印在控制台
记住初始化的MySQL密码,若后面记不住而出错,可以返回清空data文件夹的内容,再来一次

输入 mysqld --install mysql5.7-64
安装MySQL,并将其命名为mysql5.7-64,若不命名,默认名称为MySQL

输入 net start mysql5.7-64
启动mysql服务

输入 mysql -h localhost -u root -p
打开mysql5.7-64数据库,输入初始化时的密码

输入 set password for root@localhost = password (‘0820’);
修改mysql5.7-64数据库密码为0820

输入 quit;
关闭mysql5.7-64数据库

 

6、完成

至此成功安装MySQL


   
   

QT连接MySQL

 

1、修改 mysql.pro 文件

打开 Qt 的安装目录的 mysql 驱动所在夹,在我这里驱动源码目录在
E:\\Qt\\Qt5.13.1\\5.13.1\\Src\\qtbase\\src\\plugins\\sqldrivers\\mysql,其目录结构下的文件如下所示:

修改 mysql.pro 文件,修改如下

TARGET = qsqlmysql 
 
HEADERS += $$PWD/qsql_mysql_p.h 
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp 
 
//注释掉以免编译报错 
//QMAKE_USE += mysql 
 
OTHER_FILES += mysql.json 
 
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin 
include(../qsqldriverbase.pri) 
 
//MySQL安装路径中的include夹的路径
INCLUDEPATH +="D:/mysql-5.7.30-winx64/include"
//MySQL安装路径中的lib夹下的libmysql.dll库文件
LIBS +="D:/mysql-5.7.30-winx64/lib/libmysql.lib" 
//定义lib生成文件保存位置
DESTDIR = E:/Qt/Qt5.13.1/5.13.1/Src/qtbase/src/plugins/sqldrivers/mysql/mysqllib

 

2、编译 MainGW 版驱动

双击 mysql.pro 让它在 Qt Creator 编译器中打开,选择MinGW 64-bit,点击锤子进行构建

构建完成后,我们可以在
E:\\Qt\\Qt5.13.1\\5.13.1\\Src\\qtbase\\src\\plugins\\sqldrivers\\mysql
目录下查看,构建结果,出现 mysqllib文件夹,到此驱动构建完毕

打开mysqllib文件夹,下一步将驱动下图的两个 dll 文件复制到,mingw73_64/plugins/ sqldrivers 目录下面,如下图所示。


复制 MySQL 安装目录下的库文件(D:\\mysql-5.7.30-winx64\\lib)中的:libmysql.dll 到 mingw73_64\\bin 目录下,复制结果如下图所示。


 

3、创建测试项目

使用 Qt Creator 创建Qt Console Application,构建一个项目来测试一些是否可以正常链接数据库,测试代码如下

test.pro文件添加 QT +=sql

main.cpp文件

#include <QtCore>
#include <QtSql>

int main(int argc, char *argv[])

    QCoreApplication a( argc , argv);
    //打印支持驱动信息
    qDebug()<<QSqlDatabase::drivers();
    
    //创建 MySQL 数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");     
    //连接数据库
    db.setHostName("localhost");    //数据库服务器 IP
    db.setPort(3306);
    db.setUserName("root");         //数据库用户名
    db.setPassword("0820");         //密码
    db.setDatabaseName("stums");    //使用哪个数据库
    if (!db.open())     
             
        qDebug()<<db.lastError().text();     
    
    else     
             
        qDebug()<<"远程数据库连接成功!";     
    
    return a.exec();

然后执行项目,注意此时我们选择的编译组件仍然选择MinGW 64-bit,如下图所示

点击运行如果得到如下图所示的结果,表示已经完成了 MaingW 版本数据库驱动编译


 
 

如有不足之处,还望指正 1


  1. 如果对您有帮助可以点赞、收藏、关注,将会是我最大的动力 ↩︎

以上是关于「Qt」 mac环境配置qt的mysql驱动的主要内容,如果未能解决你的问题,请参考以下文章

[MAC] 配置PX4在Qt运行环境

Qt在Mac OS X下的编程环境搭建(配置Qt库和编译器,有图,很清楚)

利用VS2008编译器编译Qt4.8.2的MySQL驱动

QTMysqlMySQL安装及QT连接MySQL驱动编译操作步骤

Mac下Qt的环境搭建

QTMysqlMySQL安装及QT连接MySQL驱动编译操作步骤