qt5.12.9 连接mysql/mariadb数据库 编译源代码

2020-12-04 12:01:36  阅读 4963 次 评论 0 条

自己总结一下:

最近几次都是编译后仍然不能用 于是下载了6.1.3版本的重新编译成功

mysql-connector-c-6.1.3-win32  https://dev.mysql.com/downloads/file/?id=450611

mysql-connector-c-6.1.3-win64  https://dev.mysql.com/downloads/file/?id=450612

我用的是64位的

源代码地址

C:\Qt\Qt5.12.9\5.12.9\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的头文件路径
INCLUDEPATH +="C:\Qt\mysql-connector-c-6.1.3-winx64\include"
#这是刚才下载解压后的MySQL的库文件路径
LIBS +="C:\Qt\mysql-connector-c-6.1.3-winx64\lib\libmysql.lib"
#为了方便查找,不妨增加一条语句,该语句用来指明编译后的结果输出的位置
DESTDIR  = ../mysql/lib/

之后编译成功复制一下文件:

C:\Qt\Qt5.12.9\5.12.9\Src\qtbase\src\plugins\sqldrivers\mysql\lib\里的文件到 C:\Qt\Qt5.12.9\5.12.9\mingw73_64\plugins\sqldrivers

C:\Qt\mysql-connector-c-6.1.3-winx64\lib\libmysql.dll 到 C:\Qt\Qt5.12.9\5.12.9\mingw73_64\bin


以下是我转贴的内容::

原帖地址:https://blog.csdn.net/jin761153454/article/details/100760807

公司项目使用qt5.12.0,qt5.12.1,qt5.12.2均进行过开发连接mysql没有问题,因为这几个版本内置mysql数据库驱动.直到昨天安装qt5.13.0和qt5.13.1进行测试,发现连接mysql时提示没有驱动加载, 这是qt报错的提示"QSqlDatabase: QMYSQL driver not loaded

,QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7".从这里可以清晰的知道目前,qt5.12.3及以上和qt5.13.0及以上,均没有mysql的驱动,mysql的驱动名是QMYSQL.因为没有在有效的驱动里,所以就需要自己编译配置了.

有朋友一听到编译源码,可能就觉得很难,这里我告诉你,非常简单.打开项目后,点击编译就好了.下面说下步骤:

1.下载64位的MySQL Community Server,目前最新版本是8.0.17,下载地址是https://dev.mysql.com/downloads/mysql/.

因为我得qt是mingw编译器64位的.完成后解压即可.不用安装的.

2.打开qt安装目录找到:qt安装目录\5.13.1\Src\qtbase\src\plugins\sqldrivers\mysql,我得目录和你安装的目录有差别也不奇怪,因为我的是多个版本的qt都在,所以进行了区分.如下图的目录.

打开目录后,用qt打开mysql.pro,在mysql.pro中添加

#该路径是下载解压后的mysql的头文件路径
INCLUDEPATH +="E:\mysql-8.0.17-winx64\mysql-8.0.17-winx64\include"
#这是刚才下载解压后的MySQL的库文件路径
LIBS +="E:\mysql-8.0.17-winx64\mysql-8.0.17-winx64\lib\libmysql.lib"
 
#为了方便查找,不妨增加一条语句,该语句用来指明编译后的结果输出的位置
DESTDIR  = ../mysql/lib/

同时屏蔽QMAKE_USE += mysql:如下.如果不屏蔽会提示mysql库不存在.

#QMAKE_USE += mysql

 

完整的pro文件如下:

 

 

 

那么接下来,就点击编译按钮即可.不用其他操作.如果顺利你可以在目录下看到lib目录,如下

lib里有4个文件下图:

然后复制lib下的生成文件到D:\Qt\Qt5.13.1\5.13.1\mingw73_64\plugins\sqldrivers中.如下

 

恭喜你到这步,已经完成了mysql的驱动.你可以正常使用mysql数据库和mariadb数据库了.

如果你使用的是64位的mariadb数据库,只需要将mariadb数据库C:\Program Files\MariaDB 10.4\lib下的libmariadb.dll复制到qt的调试文件夹中改名为libmysql.dll即可.



Qt新安装了个5.12.8发现无法连接Mysql数据库,运行时提示没有Mysql驱动,

首先在程序中添加了代码查看支持的驱动 qDebug() << QSqlDatabase::drivers(),在应用程序输出框中会打印出所有支持的数据库驱动,我解决问题之后现在其中包括QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7等等这几种驱动,下面找不到驱动时就有两种情况了:
一、
⑴其中包括你要连接的数据库Mysql的驱动,在这种情况是是最简单的,你只需要安装一个mysql,mysql版本一定要和Qt运行版本一致,例如32位qt工程用32位的mysql文件,64位的qt工程用64位的mysql文件,否则错误无法解决,然后去mysql安装目录下搜索libmysql.dll;
⑵或者你不想安装mysql,需要自己找资源包括mysql的必要文件,文章底部有我的资源可以供你们下载,或者也可以自己找也可以,然后将压缩包解压之后,找到libmysql.dll;
⑶最后将libmysql.dll拷贝到Qt下的一个指定安装目录下,例如:D:\Qt\Qt5.12.8\mingw73_32\bin目录下即可解决这种情况下的找不到驱动失败情况,如果解决不了一定是mysql的libmysql.dll和qt的版本不对应
二、
⑴列举出支持的数据库之后发现没有mysql,这就有点麻烦了,首先需要安装Qt时将源文件Src安装到本地,因为我们要用到Src里边的工程文件,否则的话还是将Qt卸载重新安装吧,
⑵找到QT安装目录下的mysql工程文件,例如D:\Qt\Qt5.12.8\Src\qtbase\src\plugins\sqldrivers\mysql,在这个目录下会有mysql.pro文件,用qt打开mysql.pro工程文件加载到qt工程中
⑶修改mysql.pro工程文件,将QMAKE_USE+=mysql屏蔽或者删除掉,怎么屏蔽?在行首加#即可,
再添加头文件目录INCLUDEPATH += “mysql安装目录或者解压压缩包后的目录中的include目录”,
添加库库文件LIBS += “mysql安装目录或者解压压缩包后的目录中的lib下的libmysql.lib文件”,
为了方便找到生成的库文件,最后指定输出目录为当前工程目录DESTDIR=…/mysql/lib/
例如:
INCLUDEPATH += “D:\Program Files(x86)\Mysql\mysql-connector-c-6.1.3-win32\include”
LIBS += “D:\Program Files(x86)\Mysql\mysql-connector-c-6.1.3-win32\lib\libmysql.lib”
DESTDIR=…/mysql/lib/
⑷好,现在都添加完毕了,然后构建工程即可,但是构建时你会发现构建失败,会有报错提示,这个没关系,不用管,然后你会发现当前目录下多了一个lib文件夹,里边包含了工程构建出来的四个库文件:libqsqlmysql.a,libqsqlmysql.a,qsqlmysql.dll,qsqlmysqld.dll,
只需要将这两个dll文件拷贝到qt驱动目录(例如:D:\Qt\Qt5.12.8\mingw73_32\plugins\sqldrivers)下,你会发现所有支持的数据库驱动全在这里,
⑸之后情况就跟一相同了,找到libmysql.dll拷贝到D:\Qt\Qt5.12.8\mingw73_32\bin,就可以完美解决问题



解决问题 Qt + MySql:”QSqlDatabase: QMYSQL driver not loaded”


开发环境

  • Windows10 1803

  • Qt 5.11

  • MSVC 2017 (64bit)

问题描述

在使用 Qt 链接 MySql 数据库时,编写代码如下:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("host");
db.setUserName("name");
db.setPassword("pwd");
db.setDatabaseName("db");if(db.open()){
    qDebug() << "OK" << endl;
}else{
    qDebug() << "Failed" << endl;
}
db.close();123456789101112

运行测试时,输出如下:

QSqlDatabase: QMYSQL driver not loadedQSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
Failed 123

提示无法加载驱动。


解决方法

Step1. 下载 Connector/C 压缩包

进入 MySql Connector/C下载页,下载64位zip压缩包:

connector/c

Step2. 提取压缩包中的动态链接库

提取下图中的 .dll 文件:

dll

Step3. 复制动态链接库到 Qt 目录

定位到目录C:\Qt\Qt5.11.0\5.11.0\msvc2017_64\bin,将提取出来的 .dll 复制到此处:

qt dir

Step4. 重新运行代码 解决问题

如下图所示,问题解决:

ok



本文地址:http://jinesc.cn/?id=233
免责声明:本文为原创文章,版权归 jinesc 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?