注意,mysql驱动编译问题根据不同的版本很可能出现极其严重的问题导致本版本无法编译,请注意,还有sql路径请不要添加任何中文或者空格
Qt默认是不支持mysql驱动的,需要自己进行手动编译,我的是6.5.2,可以看到在这里
6.5.2\mingw_64\plugins\sqldrivers
这个文件夹下面是没有qsqlmysql.dll这个组件的
驱动编译问题首先需要源码也就是qt自带的源码,如果qt下没有这个Src文件夹
返回qt安装目录下,打开cmd窗口,将MaintenanceTool.exe拖入cmd窗口
如图
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是sqldrivers这样的),那么建议更新版本到一个能够打开的版本,或者自行查阅资料进行解决
当然,也有可能名字是对的,但是出现了多一个文件夹例如psql(我一开始就是有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路径,之后选择realse进行编译,
当然有可能他会报一个错误,不需要理会
这个时候返回.cmake.conf的上级目录,可以看到生成的realse文件
进入然后点击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的官网
选择Connector/C++
下载相应版本的zip,我的是8.1.0,也就是第二个,后面的Archives是历史版本,如果不知道怎么查看自己的mysql版本,请打开mysql输入密码后输入status查看
,下载完了之后进入
把里面除了文件夹的所有组件
复制粘贴到你的Debug或者Realse的生成文件下,这样就可以连接上数据库了
如果还报错之类的,可以删除已经构建的项目文件夹重新构建,我用的是minGW编译的,理论上来说MSVC也是一样的,这一点大家还请自行探索即可
好了就是这样,因为我下载的直接复制粘贴到了mysql文件夹下,所以lib64的路径会不一样,各位自行调整即可
这方面的问题本教程不可能完全提到,如果有不全的地方还请自行与其他教程或者帖子相结合,还请见谅
顺带一提,最后发布版本打包exe过后也需要把lib64的组件复制过去,本教程写于2023年8月18日,如果时间过去很久,那么教程就仅供参考了,还望海涵