MySQLqt mysql驱动问题解绝

风俗解决方法:
无异于、解决问题
  本文解决在Ubuntu16.04系下,Qt5不可以连接MySQL数据库的题目(Qt5欠MySQL驱动,Qt5紧缺libqsqlmysql.so动态库,怎么样安装libqsqlmysql库,咋样用Qt5源码编译生成libqsqlmysql库)
 
亚、问题现象
  编译运行Qt连接MySQL数据库程序的时节,控制台会报如下错误:
  QSqlDatabase: QMYSQL driver not loaded
  QSqlDatabase: available drivers: QSQLITE QMYSQL,Q…..等
 
老三、问题由来
  用Qt连接MySQL,Qt会去加载libqsqlmysql.so动态库,假如加载不至或加载的仓库暴发问题,都晤面招致Qt指示driver
not loaded。
  (1)加载不顶:Qt安装目录下之sqldrivers目录中尚无libqsqlmysql.so文件(我的路:/home/ubuntu/Qt5.8.0/5.8/gcc_64/plugins/sqldrivers)
  (2)库暴发问题:进入Qt的sqldrivers目录,执行“ldd
libqsqlmysql.so”命令,会冒出“libmysqlclient_r.so.16 => not
found”等等not found提示,如下图:

      MySQL 1

季、解决智
思路:自己手动编译mysql驱动的源码,生成libqsqlmysql.so库,然后将这库拷贝到Qt的sqldrivers目录下
1、编译libqsqlmysql.so从前需要用到Qt连接mysql驱动的源码,由此预先去Qt官网下充斥Qt安装包qt-opensource-linux-x64-5.8.0.run
  (1)打开网址:https://www.qt.io/,点击Download

        MySQL 2

  (2)做同仿照精选题,一路选用下去:
  (也可从来打开这网址(可能失效):https://www.qt.io/download-open-source/,选View
All Downloads)

MySQL 3

MySQL 4

 

MySQL 5

MySQL 6

MySQL 7

  (3)接纳查看所有的下载资源(View All Downloads)

 

MySQL 8

  (4)采纳下载的本子(我选拔的凡Qt 5.7.0 for Linux64-bit)

MySQL 9

 2、安装Qt
  (1)运行安装包(我是管Qt安装至网根目录下的)
  若想装及网根目录下,则履行:sudo
./qt-opensource-linux-x64-5.7.0.run
  若想装到用户根目录下,则举行:./qt-opensource-linux-x64-5.7.0.run
 
  (2)选拔设置源码组件

MySQL 10

 

3、编译生成Qt连接MySql的让,即libqsqlmysql.so
  (1)进入Qt安装目录,找到MySql驱动源码目录
  参考我之目:/home/ubuntu/Qt5.8.0/5.8/Src/qtbase/src/plugins/sqldrivers/mysql
  注:每个人的源码目录可能两样,找的时候参考Src,qtbase、plugins、sqldrivers、mysql目录去追寻就从未有过错。

MySQL 11

  (2)执行qmake生成Makefile。
  注:要是前安装了其他Qt版本,那么可能实施之凡此外版本qmake。
  不妨执行“qmake
-v”命令查看转qmake的本是否以及我们恰好装的Qt的qmake一致。
  最佳方案:首先找到新装置之Qt的qmake所在路子,然后找到mysql.h头文件所在路径,最终执行qmake命令生成Makefile(指出执行qmake的上带及qmake的门路)
  qmake命令:sudo /opt/Qt5.7.0/5.7/gcc_64/bin/qmake
 “INCLUDEPATH+=/usr/include/mysql” “LIBS+=-L/usr/lib -lmysqlclient_r”
mysql.pro
(在实施ldd
libqsqlmysql.so时所缺乏的文书,不止那么些,还有其余多少个,首要思路就是是在/lib/x_8664-linux-gnu目录下找到名字基本相同的文件。找到后复制到/usr/lib目录下,再改名(改化适宜的名字,与实施ldd命令时所短的公文称相同)三单公文还如此做)

MySQL 12

履之经过被假如报错,仔细看错误是寻觅不顶目仍旧找不交仓库文件,依据点的章程去探寻或者去装库,在举办qmake命令就得了。
 
  我坐自身的系列也例操作一下

MySQL 13

MySQL 14

MySQL 15

MySQL 16

(3)生成libqsqlmysql.so
  执行命令:make
  注意make命令输出的终极几乎行,提议了另外libqsqlmysql.so地方。
自家之路径是:/home/ubuntu/Qt5.8.0/5.8/Src/qtbase/plugins/sqldrivers
 
4、把生成libqsqlmysql.so拷贝到sqldrivers文件夹下(我是拷贝到:/home/ubuntu/Qt5.8.0/5.8/gcc_64/plugins/sqldrivers)
 
五、测试样例
  到此地,Qt就早已得以连接MySql数据库了,拷贝这些次去尝试吧。
  pro文件中补充加那词话“QT += sql”,让Qt加载数据库模块

1 #include <QCoreApplication>
2 #include <QSqlDatabase>
3 #include <QSqlQuery>
4 #include <QSqlTableModel>
5 #include <QSqlError>
6 #include <QDebug>
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 }

 

网站地图xml地图