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 配置开发环境还是有点看命的,祝你成功。