QT链接MYSQL解决Linux/Ubuntu下 QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
连接数据库失败

这篇博客就是为了解决 Linux / Ubuntu 下这个问题 ,其他 linux 操作应该类似

apt install libmysqlclient-dev 这个必须装 yum 自行解决
可选项:提前弄个libqsqlmysql.so ,ldd 一下看看缺什么提前准备好。
这个libqsqlmysql.so 找地方下载就行,估计是用不了,除非正好匹配你的Qt版本(小概率事件),
不过可以用来探探环境。

1 出现这个问题 的原因是 各个平台linux 动态库有所差别,索性 QT官方直接让用户自己造库
2首先安装QT时,必须添加源码安装,安装时鼠标点上就行了,嫌麻烦的可以重装QT
3来到源码目录/home/jojochao/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql
我的用户名jojochao ,自行改对,这个目录选择源码安装才有。
4- 修改本文件下的 mysql.pro

1
2
3
4
5
6
7
8
  TARGET = qsqlmysql
  HEADERS += $$PWD/qsql_mysql_p.h
  SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
  #QMAKE_USE += mysql                                                                                                                                                                                    
  OTHER_FILES += mysql.json
  unix:LIBS += -L/usr/lib/x86_64-linux-gnu/ -lmysqlclient
  PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
  include(../qsqldriverbase.pri)

注释掉QMAKE_USE += mysql
添加动态库目录 unix:LIBS += -L/usr/lib/x86_64-linux-gnu/ -lmysqlclient
我的/usr/lib/x86_64-linux-gnu/ 目录是这个,自行指定正确 libmysqlclient.so路径
5- 修改qsqldriverbase.pri ,这个文件在上级目录 vim …/qsqldriverbase.pri

1
2
3
4
5
6
7
8
9
  0 QT  = core core-private sql-private                                                                                                                                                                    
  1
  2 # For QMAKE_USE in the parent projects.
  3 #include($$shadowed($$PWD)/qtsqldrivers-config.pri) 这行注释掉
  4
  5 PLUGIN_TYPE = sqldrivers
  6 load(qt_plugin)
  7
  8 DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

6 好了该qmake 了
目录到刚才 mysql 文件夹
sudo /home/jojochao/Qt5.14.2/5.14.2/gcc_64/bin/qmake 用户名目录自己记得改
顺利地话 现在得到了makefile 文件
7 sudo make
顺利地话在下面目录会有你要的 libqsqlmysql.so 这会对应你的QT版本
/home/jojochao/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers
用户名目录自己修改 ,这个位置差不多就是刚才 mysql 上边一点的文件夹。
稳妥期间 ldd libqsqlmysql.so 查看一下 ,如果缺什么自行添加软链接,或者下载。
8 把你的 libqsqlmysql.so 放到 /home/jojochao/Qt5.14.2/5.14.2/gcc_64/plugins/sqldrivers
修改这个库的权限755。目录自己改为对应的
9- 这个时候重新链接数据库就成功了,不会报错了, 完事收工。以上步骤遇到小问题可以试试,改变qmake 和修改 qsqldriverbase.pri 配置文件的顺序。
10 配置开发环境还是有点看命的,祝你成功。