欢迎光临散文网 会员登陆 & 注册

qt的mysql连接教程以及驱动编译相关问题最新版,写于2023年8月18日

2023-08-18 14:58 作者:冰碎琉璃  | 我要投稿

最近写项目需要与mysql数据库建立连接,在网上查了很多资料,要么资料是五六年前的,而两三年前的资料要么有问题,要么就是感觉是东拼西凑出来的一样,驴头不对马嘴,而且过程及其粗糙,生怕大家学会了,故而自己编译完后写下了教程---2023.8.18


!!!注意,mysql驱动编译问题根据不同的版本很可能出现极其严重的问题导致本版本无法编译,请注意

 

Qt默认是不支持mysql驱动的,需要自己进行手动编译,我的是6.5.2,可以看到在这里

6.5.2\mingw_64\plugins\sqldrivers

这个文件夹下面是没有qsqlmysql.dll这个组件的

 

驱动编译问题首先需要源码也就是qt自带的源码,如果qt下没有这个Src文件夹,是因为当初安装的时候没有勾选


qt下的Src文件夹展示

返回qt安装目录下,打开cmd窗口,将MaintenanceTool.exe拖入cmd窗口

如图

不要问为啥你们的是黑框框。。没影响,美化可以自己搜

Powershell也可以(我自己用的powershell),然后空一格,输入镜像网站

--mirror https://mirrors.tuna.tsinghua.edu.cn/qt

mirror后面的部分不唯一,网上也能找到很多大学的镜像网站

(你也可以直接双击打开,只不过下载速度极其感人就是了,及其折磨)


然后回车,就可以打开qt页面了,点击下一步,选择添加或移除组件,然后下一步,勾选Archive

然后点击筛选,就可以显示更多版本了,找到自己的版本,然后勾选Sources

这里我已经安装过了,就不演示了,下面也没什么,等就好了,剩下的点击下一步安装就好了

安装好了之后,就可以有Src了,之后进入Src\qtbase\src\plugins\sqldrivers

打开.cmake.conf这个文件,选择使用记事本,可以看到本来应该是这样的

因为我已经改过了,所以是我把加上去的剪切了一下,方便大家看的,上面的版本号不影响,千万不要随便更改

我们添加上这三行代码

SET(FEATURE_sql_mysql ON)

SET(MySQL_INCLUDE_DIR "x:/xxxx/include")

SET(MySQL_LIBRARY "x:/xxx/lib/libmysql.lib")

 

最后两行是你下载的mysql的安装路径,mysql的安装本处不再多说,例如我的安装在了E盘的Mysql下,就写成这样

SET(FEATURE_sql_mysql ON)

SET(MySQL_INCLUDE_DIR "E:/Mysql/include")

SET(MySQL_LIBRARY "E:/Mysql/lib/libmysql.lib")

然后打开qt,打开这个文件夹下的CMakeLists.txt

打开过后看左边,是不是这样的,如果整个名字都错了,不是QSQLiteDriverPlugins,而是sqldrivers之类的(据我所知qt6.2.3是这样的),那么建议更新版本到一个能够打开的版本,或者自行查阅资料进行解决

当然,也有可能名字是对的,但是出现了多一个文件夹例如psql(我一开始就是这样的),然后运行起来会有上百个报错,那么这个时候在.cmake.conf之前那个文件中,改成这样

SET(FEATURE_sql_mysql ON)

SET(FEATURE_sql_psql OFF)

SET(MySQL_INCLUDE_DIR "E:/Mysql/include")

SET(MySQL_LIBRARY "E:/Mysql/lib/libmysql.lib")

就可以关闭psql了,记得吧最后两行的替换成自己的mysql路径,之后选择release进行编译,

release版本是可以的,其他版本我不清楚,有兴趣的可以自己试一试

当然有可能他会报一个错误,不需要理会

这个报错不影响之后的教程和生成文件

这个时候返回.cmake.conf的上级目录,可以看到生成的realse文件

蓝标就是我说的release文件夹

进入然后点击plugins,点击sqldrivers,可以看到

这里我们复制粘贴qsqlmysql.dll和qsqlmysql.debug,把他放入开头提到的6.5.2\mingw_64\plugins\sqldrivers,这里6.5.2是我的qt版本,各位自行更改就好

然后打开你的mysql,进入lib文件夹,找到libmysql.dll

把他放到你的qt的bin里面(这一段大家如果找不到一定要仔细看我上面的文件夹路径)

这个时候就搞定了,mysql驱动就已经编译并且加载完毕了,如果你有输出驱动的代码这个时候就能够输出有mysql驱动了,前提是你运行的版本要跟你刚刚修改的版本一样

 

但是这还没完,还有一个问题就是在连接mysql驱动的时候,依然会报错,显示mysql驱动没有加载,但是输出的可使用的驱动里面明明是有mysql的,这个问题是由于mysql版本高的时候会有一个保护机制,首先我们进入mysql的官网


选择Connector/C++

下载相应版本的zip,我的是8.1.0,也就是第二个,后面的Archives是历史版本,如果不知道怎么查看自己的mysql版本,请打开mysql输入密码后输入status查看

,下载完了之后进入文件夹,找到

把里面除了文件夹的所有组件

复制粘贴到你项目代码生成的Debug或者Realse的文件下,这样就可以连接上数据库了,如果你发现你lib64内容和我的不一样,不要慌张,版本不一样这是很正常的,正常操作就好




好了就是这样,因为我下载的直接复制粘贴到了mysql文件夹下,所以lib64的路径会不一样,各位自行调整即可

这方面的问题本教程不可能完全提到,如果有不全的地方还请自行与其他教程或者帖子相结合,还请见谅

顺带一提,最后发布版本打包exe过后也需要把lib64的组件复制过去,本教程写于2023年8月18日,如果时间过去很久,那么教程就仅供参考了,还望海涵



qt的mysql连接教程以及驱动编译相关问题最新版,写于2023年8月18日的评论 (共 条)

分享到微博请遵守国家法律