Qt5使用MYSQL报错QMYSQL driver not loaded的解决办法
很多小伙伴在使用Qt5进行MYSQL数据的开发或者学习的过程中,写好程序编译会出现报错:QMYSQL driver not loaded
。经过我在网络上的学习与查找,总结出以下几种可能性。
开头的话:注意使用MySQL数据库时要保证MySQL数据的版本(32位还是64位)与使用的编译器版本(32位还是64位)与Qt类库Qt5.15.0\5.015.0\mingwversion
_bit
的版本相匹配。
举个例子:MySQL版本位32位 = 编译器版本mingwxx_32 = Qt类库版本mingwxx_32时才能保证能够使用。
注:Qt类库版本路径为
Qt5.15.0\5.15.0\mingwxx_32
;
我们要确保类库的bin路径(Qt5.15.0\5.15.0、 mingwxx_32\bin
)里放置的libmysql.dll和libmysql.lib
与(Qt\Qt5.15.0\5.15.0\mingw81_32\plugins\sqldrivers
) 里放置的qsqlmysql.dll和qsqlmysql.dll.debug能够匹配。
一般由MySQL 32位的libmysql.dll和libmysql.lib通过mingwxx_32编译过的qsqlmysql.dll和qsqlmysql.dll.debug是可用的。
首先我们检查编译环境下的的mysql驱动,下面是我的路径。
D:\Qt\Qt5.15.0\5.15.0\mingw81_32\plugins\sqldrivers
路径里是否包含了qsqlmysql.dll和qsqlmysql.dll.debug两个文件。下面我们分类说明以下
一、Qt\Qt5.15.0\5.15.0\mingw81_32\plugins\sqldrivers
路径里能够找到qsqlmysql.dll和qsqlmysql.dll.debug这两个文件,我们将将libmysql.dll和libmysql.lib导入到对应的类库,来确定是否要重新编译驱动
路径里能够找到这两个文件,我们可以把MySQL安装路径下
(…/lib里) 如下图
我们将libmysql.dll和libmysql.lib导入到对应的类库里,如你装的是32位的MySQL那么你可以选择Qt安装目录对应类库目录的bin文件夹中。我的路径是:
D:\Qt\Qt5.15.0\5.15.0\mingw81_32\bin
请注意:我的MySQL位32位版本的,我将libmysql.dll和libmysql.lib
放入的也是32位mingw32编译出来的Qt类库的。这样就可以解决qsqlmysql.dll和qsqlmysql.dll.debug存
在但编译依然报错的问题了,如果依然有错误那就是qsqlmysql.dll和qsqlmysql.dll.debug与libmysql.dll和libmysql.lib
的版本不匹配的问题了。
总结:类库路径:D:\Qt\Qt5.15.0\5.15.0\mingw81_32\plugins\sqldrivers
里存在qsqlmysql.dll和qsqlmysql.dll.debug
但依然报错,那么查看路径D:\Qt\Qt5.15.0\5.15.0\mingw81_32\bin
里是否有libmysql.dll和libmysql.lib
。
1、如果没有则从MySQL/lib中找到这两个文件加入bin中。
2、有则说明MySQL版本与类库版本或者编译器版本不一致。
二、Qt\Qt5.15.0\5.15.0\mingw81_32\plugins\sqldrivers
路径里找不到到qsqlmysql.dll和qsqlmysql.dll.debug这两个文件,这说明驱动与mysql的库文件不匹配,那么我们需要重新编译mysql驱动了。
编译驱动的教程见:https://blog.youkuaiyun.com/hp_cpp/article/details/105050910