Ubuntu18.04下Qt5.9.8连接mysql数据库失败的解决办法
问题:
连接mysql数据库时,出现如下 提示:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
db open err: “Driver not loaded Driver not loaded”
解决办法:
1、sudo apt-get install libmysqlclient-dev
2、进入QT安装目录的源码目录(如果安装 时没有选择源码,重新安装下),找到MySql驱动源码目录
如:/opt/Qt5.9.8/5.9.8/Src/qtbase/src/plugins/sqldrivers/mysql
3、用Qt Creator打开mysql.pro文件,修改pro文件如下:
4、编译mysql工程,会在上一级目录下的plugin/sqldrivers目录下生成libqsqlmysql.so文件,将该文件拷贝到
/opt/Qt5.9.8/5.9.8/gcc_64/plugins/sqldrivers目录下就可以了。
注:如果编译时出现”qtsqldrivers-config.pri: No such file or directory“找不到的情况,上一级目录打开qsqldriverbase.pri
文件,把include( s h a d o w e d ( shadowed( shadowed(PWD)/qtsqldrivers-config.pri)注释掉
QT = core core-private sql-private
# For QMAKE_USE in the parent projects.
#include(
s
h
a
d
o
w
e
d
(
shadowed(
shadowed(PWD)/qtsqldrivers-config.pri)
include(
s
h
a
d
o
w
e
d
(
shadowed(
shadowed(PWD)/configure.pri)
PLUGIN_TYPE = sqldrivers
执行命令:make
注意make命令输出的最后几行,指出了生成的libqsqlmysql.so位置。
4、把生成libqsqlmysql.so拷贝到sqldrivers文件夹下(我是拷贝到:/home/dgp/Qt5.9.8/5.9.8/gcc_64/plugins/sqldrivers/libqsqlmysql.so )
五、测试样例
到这里,Qt就已经可以连接MySql数据库了,拷贝这个程序去试试吧。
pro文件中添加这句话“QT += sql”,让Qt加载数据库模块
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7
8 int main(int argc, char *argv[])
9 {
10 QCoreApplication app(argc, argv);
11 QSqlDatabase db = QSqlDatabase::addDatabase(“QMYSQL”); //database driver
12 db.setHostName(“localhost”); //database ip address
13 db.setUserName(“username”); //database username
14 db.setPassword(“password”); //database password
15 db.setDatabaseName(“HC”); //database table name
16 if (true == db.open())
17 {
18 qDebug() << “succ”;
19 }
20 else
21 {
22 qDebug() << “failed”;
23 exit(0);
24 }
25 return app.exec();
26 }
参考链接
https://www.cnblogs.com/zhangnianyong/p/11458033.html
https://forum.qt.io/topic/59449/qsqldatabase-qmysql-driver-not-loaded-build-mysql-plugin
https://www.linuxidc.com/Linux/2016-12/138574.htm