昨天是一场经过了如此纠结的MySQL数据库的卸载再安装的洗礼的一天,今天的在Windows下Qt驱动MySQL数据库也是历经千辛万苦才到达成功的彼岸的。虽然遇到了各种乱七八糟的问题,不过总算是圆满解决,这也是令人欣慰的一点吧。谨以此文纪念下我的艰难曲折。如果能为大家提供一些帮助,我将不胜荣幸。
MySQL不能选择Typical型,这样会缺少库文件。可以选择Full型或Custom型。我安装的MySQL是Typical型的,所以在lib目录下是没有opt文件夹的,因此进行了重新安装(积累了N多经验,这次安装可算是小菜一碟)。为了图方便,我直接选择了Full型的,但这样会存在一个问题,MySQL默认的安装路径是C:\Program Files\MySQL\MySQL Server 5.1,这个路径中存在空格,这会在后面的操作中出现问题。我的解决方案是在C盘下直接新建一个mysql文件夹,将C:\Program Files\MySQL\MySQL Server 5.1\include 和C:\Program Files\MySQL\MySQL Server 5.1\lib目录拷到C:\mysql文件夹下。
安装好MySQL后,进行Qt的安装。将Qt下的bin和QT\qt\bin配置环境变量。
Qt是集成了mingw的,看到网上说要下载MinGW,不管三七二十一,我也下载安装了一下。将MinGW的bin配置环境变量。
mingw使用的库和msvc使用的不同格式的库而引起的。而mysql只提供了msvc可使用的库,所以需要下载一个动态库格式转换工具,网址为: http://www.qtcn.org/download/mingw-utils-0.3.tar.gz,解压后把里边bin目录里的remip.exe拷到mingw的bin目录。我是把reimp.exe同时也放到了MinGW的bin下(我也不知道有没这必要,一来是首次接触Qt这东东,二来也没看到网上详细的解释)。
以下为本人机器上的命令行操作,路径请修改为自己设置的:
过程:
1:从libmysql.lib生成libmysql.a文件(mingw使用的静态链接文件为linux格式 *.a)
>>C:
>>cd mysql\lib\opt
>>reimp -d libmysql.lib (生成 libmysql.def文件)
>>dlltool -k -d libmysql.def -l libmysql.a (生成 libmysql.a文件)
2:生成Qt下的mysql驱动:
>>cd \
>>cd qt\src\plugins\sqldrivers\mysql
>>QMAKE -o Makefile "INCLUDEPATH+=C:\mysql\include" "LIBS+=C:\mysql\Llib\opt\libmysql.a" mysql.pro
>>mingw32-make
在这个时候,我遇到问题。在执行完QMAKE -o Makefile "INCLUDEPATH+=C:\mysql\include" "LIBS+=C:\mysql\Llib\opt\libmysql.a" mysql.pro
会出现警告。
WARNING: (internal):1: Unescaped backslashes are deprecated.
WARNING: (internal):1: Unescaped backslashes are deprecated.
WARNING: (internal):1: Unescaped backslashes are deprecated.
遇到该警告,也有看到网上有相应的解决方法,现在也把它放上来以供参考。但貌似这警告对后面的执行没有影响。
用记事本打开D:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql\ mysql.pro文件,在第二行加入: INCLUDEPATH += "C:/Program Files/MySQL/MySQL Server 5.1/include" LIBS += "C:/Program Files/MySQL/MySQL Server 5.1/lib/opt/libmysql.lib" 并保存.
(其实我也比较困惑这个问题,我觉得应该是在第二行加入:INCLUDEPATH+="C:\mysql\include" LIBS+="C:\mysql\Llib\opt\libmysql.a" 这只是我的猜测,我也没试过。呵呵~)
在执行mingw32-make时,出现了一堆vc98的问题,在网上看了蛮多的博文,都没有看到类似的问题,不过踏破铁鞋无觅处得来全不费工夫,终于在某篇博文上看到了这个问题,博主也给出了解决方法。造成一堆乱78糟的vc98问题的原因是在装vc98时自动的配置了环境变量include 和 lib ,先删了这两个环境变量,执行完mingw32-make命令后再重新配置回去就没有问题了。
成功执行后,会E:\QT\qt\plugins\sqldrivers下生成下面四个文件。
-
qsqlmysql4.dll
-
libqsqlmysql4.a
-
qsqlmysqld4.dll
- libqsqlmysqld4.a
这样,终于,Qt可以驱动Mysql了。
接下来写下测试程序。
头文件引入:
#include <QSqlDatabase>
#include <QSqlError>
测试代码:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("gamesql");
db.setUserName("root");
db.setPassword("netjava");
bool ok = db.open();
if(!ok){
qDebug()<<"failuer";
qDebug()<<db.lastError();
}else{
qDebug()<<"success";
}
注意,要在项目的pro文件下加入
QT +=sql
才可以。
QT += core gui QT +=sql TARGET = test TEMPLATE = app
好了,这样一切OK啦~~
就一个简单的配置驱动问题,弄了一天,整个人就属于焦头烂额的状态,不过收获还是有的嘛。在尘埃落定的那一刻,还是蛮开心的~~(*^__^*) ~~
驱动安装问题小结一下:
1.MySQL的include和lib路径中不能含有空格。
2.下载mingw-utils-0.3.tar.gz 将其解压后的reimp.exe放到mingw下,执行生成libmysql.a文件
3.配置Qt环境变量。同时我也把WinGW也配置了环境变量(我不知道这是否必要)。
4.用qmake和make命令生成MySQL驱动。
4.警告解决,用记事本打开D:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql\ mysql.pro文件配置文件。
5.如果有vc98相关环境变量,将vc98的环境变量先删了,装好后再恢复。
希望能对大家有帮助~~
分享到:
相关推荐
Windows下Qt连接Mysql数据库的方法,解决QSqlDatabase: QMYSQL driver not loaded 问题
Qt添加MySQL数据库驱动插件的详细教程 我就是通过这个教程 完成QT与数据库的连接的
Qt 添加MySQL驱动教程(成功版)
Qt下MySql数据库驱动
Qt4版本的MySQL数据库驱动
解决QT连接MYSQL数据库报:QMYSQL driver not loaded
本资料说明了在Windows10及Ubuntu18系统下为Qt5配置mysql驱动的全过程。相比网上一些资料更加的详细有用,亲测配置过程有效。资料使用pdf格式,带书签,方便查看。
http://blog.csdn.net/youhaipeng/article/details/7997452 这个是我的博客里面文章,说了怎样在WinXP下Qt连接MySQL数据库,讲述了驱动的编译方法和过程,这个代码是我用过的,可以用来测试
Qt下一个简单的连接mysql数据库例子。
windows 平台下的qt 连接mysql数据库所需的驱动。
qt5.12.1 开发使用mysql8.1,发现数据库找不到驱动,需要下载mysql驱动,将下载的数据库mysql.dll放置如下路径F:\Qt\Qt5.12.1\5.12.1\mingw73_64\bin即可
Qt5.15显示 MYSQL数据库缺少 驱动文件,需要在相应文件加入相应的的动态库。
qt6.0.4-32位库解决mysql数据库驱动 qsqlmysql.rar 解压复制到插件qmysql插件中,即可使用 包含 debug和release两个版本库,而且包含mysql库,防止使用的mysql和编译时的不一致,如果有问题,可以将此库放入qt的bin...
QT下mysql数据库驱动,windows版
根据QT5.13生成的MySQl数据库驱动,生成环境是win1064位+QT5.13+MySQL5.5,下载前请提前确认好版本信息,直接将驱动放到QT的安装目录的sqldriver目录下即可(例如:C:\Qt\Qt5.13.0\5.13.0\mingw73_64\plugins\...
QT联接mysql数据库的驱动方法.docx
MySQL数据库装好了,但怎么也不能编译QT库的MYSQL驱动,尝试了一周,终于找到了一种借用别人编好驱动的方法,测试通过,有图为证,不足之处,请见谅~
由于qt5属于32位,但是mysql有32位,有64位,如果装了64位的mysql,那么使用qt5将无法操作mysql数据库,需要将文本的库文件,放到qt的的bin目录下,则可顺利的操作mysql数据库,否则qt报找不到mysql驱动
编译运行Qt连接MySQL数据库程序的时候,控制台会报如下错误:QSqlDatabase: QMYSQL driver not loaded,原因在于Mysql驱动libqsqlmysql.so未能成功安装,linux版本下只安装了sqlite驱动,Mysql驱动需根据安装数据库...