Qt连接MySQL数据库失败

连接MySQL数据库时报错:

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

有上述报错是因为使用的qt版本不自带mysql的驱动,需要手动编译。可以检查一下D:\pawf\Program\dev\cpp\Qt\5.15.2\mingw81_64\plugins\sqldrivers目录中是否有mysql的驱动文件,如下图所示:

注意:不同版本的MySQL里面包含不同的libmysql.dll,不同的libmysql.dll必须和配套的qsqlmysqld.dll一起才能正常工作!

进入到D:\pawf\Program\dev\cpp\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql目录中,使用qtcreator打开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 += "D:\pawf\Program\dev\MySQL\MySQL Server 8.0\include"
//这是MySQL的库文件路径
LIBS += "D:\pawf\Program\dev\MySQL\MySQL Server 8.0\lib/libmysql.lib"
//为了方便查找,不妨增加一条语句,该语句用来指明编译后的结果输出的位置
DESTDIR  = ../mysql/lib/

QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
# include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)

PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

构建后在编译的输出信息中会显示生成的驱动文件的路径:

qsqlmysql.dllqsqlmysql.dll.debug复制到D:\pawf\Program\dev\cpp\Qt\5.15.2\mingw81_64\plugins\sqldrivers目录中即可。

注意:需要将MySQL的D:\pawf\Program\dev\MySQL\MySQL Server 8.0\lib目录中的libmysql.dll添加到可执行文件的目录中,如果出现类似于没有加载mysql驱动但是又能够找到mysql的驱动这种错误,就说明缺少这个文件。当然,不添加也行,可以通过设置环境变量的方法来使可执行文件能够找到该文件,但是在打包的时候是不会自动添加这个文件的,所以一定不要忘记手动添加该文件到程序目录中

按照上述内容去做的话,使用qtcreator进行开发应该就没问题了,但是在使用clion进行开发时还是会有问题,会出现类似于mysql驱动未加载,没有可用驱动这种报错,程序直接非正常结束。

将自己使用的类似于D:\pawf\Program\dev\cpp\qt\5.15.2\mingw81_64\bin这个目录添加到环境变量就可以了。还有问题的话可以重启一下Clion。或者不添加环境变量也行,直接在可执行程序的目录下使用windeployqt命令打包程序,再把libmysql.dll复制过来就行。

posted @   峰与风随  阅读(658)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示