文档章节

Centos 7 中 QT出现QSqlDatabase: MYSQL driver not load

Michael19
 Michael19
发布于 2016/07/15 09:19
字数 633
阅读 26
收藏 0
点赞 0
评论 0

系统版本 : Centos7  QT VERSION : 5.6

测试代码:

#include <iostream>
using namespace std;

#include <QApplication>
#include "gui/mainwindow.h"

#include <QSqlDatabase>
#include <QDebug>
#include <QSqlError>
#include <QSqlQuery>

using namespace std;

int main (int argc, char **argv) {
    //输出可用数据库
    QCoreApplication::addLibraryPath("/home/njq/dev_env/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers");
    qDebug()<<"available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
        qDebug()<<driver;

    //打开MySQL
    QSqlDatabase data_base = QSqlDatabase::addDatabase("QMYSQL");
    data_base.setHostName("192.168.0.200");  //设置主机地址
    data_base.setPort(3306);  //设置端口
    data_base.setDatabaseName("alarmcenter");  //设置数据库名称
    data_base.setUserName("root");  //设置用户名
    data_base.setPassword("root");  //设置密码
    if(!data_base.open())
        qDebug()<<"failed to connect to mysql" << data_base.lastError ().text ();
    else {
        qDebug()<<"success";

        QString strSQL = "SELECT alarm_id FROM alarm;";
        QSqlQuery sql_query;
        sql_query.prepare (strSQL);
        sql_query.exec ();
        while (sql_query.next ()) {
            int id = sql_query.value (0).toInt ();
            qDebug () << id;
        }
    }
}

出现了如下的错误:

QSqlDatabase: MYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
failed to connect to mysql "Driver not loaded Driver not loaded"

查看QT的安装目录

~/dev_env/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers

有一个文件:

libqsqlmysql.so

使用ldd命令检查下依赖

[xxx[@localhost](http://my.oschina.net/u/570656) sqldrivers]$ ldd libqsqlmysql.so 
    linux-vdso.so.1 =>  (0x00007ffcf65b4000)
    libmysqlclient_r.so.16 => not found
    libz.so.1 => /lib64/libz.so.1 (0x00007f452c898000)

看到 libmysqlclient_r.so.16 这个so文件的依赖没有找到 通过查找资料,发现如下解决办法 先安装MYSQL的开发环境

[njq[@localhost](http://my.oschina.net/u/570656) sqldrivers]$ sudo yum install mysql-devel

重新编译mysql驱动

[njq[@localhost](http://my.oschina.net/u/570656) mysql]$ cd ~/dev_env/Qt5.6.0/5.6/Src/qtbase/src/plugins/sqldrivers/mysql
[xxx[@localhost](http://my.oschina.net/u/570656) mysql]$ ~/dev_env/Qt5.6.0/5.6/gcc_64/bin/qmake  #因为没有配置qmake路径,所以用了全路径
[xxx[@localhost](http://my.oschina.net/u/570656) mysql]$ make

看到编译后的最后一行

mv -f libqsqlmysql.so ../../../../plugins/sqldrivers/

把这个生成的libqsqlmysql.so覆盖到……./Qt5.6.0/5.6/gcc_64/plugins/sqldrivers

[xxx@localhost sqldrivers]$ mv libqsqlmysql.so ~/dev_env/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers/

然后再查看libqsqlmysql.so的依赖

[xxx@localhost sqldrivers]$ ldd libqsqlmysql.so 
    linux-vdso.so.1 =>  (0x00007fffc437c000)
    libmysqlclient.so.18 => /usr/lib64/mysql/libmysqlclient.so.18 (0x00007f3de67bc000)
    libz.so.1 => /lib64/libz.so.1 (0x00007f3de65a5000)
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f3de636e000)
    libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f3de6155000)
    libssl.so.10 => /lib64/libssl.so.10 (0x00007f3de5ee7000)
    libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f3de5aff000)
    libQt5Sql.so.5 => not found
    libQt5Core.so.5 => not found
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3de58e2000)
    libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f3de55da000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f3de52d7000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f3de50c1000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f3de4d00000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f3de4afb000)
    libfreebl3.so => /lib64/libfreebl3.so (0x00007f3de48f8000)
    libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f3de46ac000)
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f3de43c6000)
    libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f3de41c2000)
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f3de3f90000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f3de6ee3000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f3de3d80000)
    libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f3de3b7c000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f3de3962000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f3de373c000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f3de34db000)
    liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f3de32b5000)

看到问题已经搞定

重新运行程序,看到如下结果

available drivers:
"QSQLITE"
"QMYSQL"
"QMYSQL3"
"QPSQL"
"QPSQL7"
success
171118
171119
171120
171121
171122
171123
171124
171125
171126
171127
171128
171129
171130
171131
171132
171133
171134
171135
171136

© 著作权归作者所有

共有 人打赏支持
Michael19
粉丝 0
博文 1
码字总数 633
作品 0
杭州
用Qt Creator编程连接数据库的问题:QMYSQL driver not loaded

刚入手QT没多久,在连接数据库时遇到一问题。 代码如下: QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("localhost");db.setDatabaseName("test");db.setUserNam......

lee.qiao
2012/05/04
3.2K
0
Ubuntu12.04下使用QT4.8连接MySQL找不到驱动

运行QT程序显示: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE 于是百度了下,大多数说缺少 libqt4-sql-mysql sudo apt-get install libqt4-sql-mys......

流年逝水
2014/06/29
381
2
【问题解决】QSqlDatabase: QMYSQL driver not loaded

使用QT的QSqlDatabase操作数据库的时候提示一下信息 QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7 确保有libqsqlmysql.......

陈昊Sevens
2014/03/19
0
0
Qt知识点汇总——来自网络

1.程序可以显示中文 include <QTextCodec> QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 2.连接数据库//http://www.im80hou.com/html/mysql/2009/1003/1538.html .pro中添加:......

qt_plus
2016/06/21
56
0
在Qt4中使用MySQL4.1及其以上版本中的中文问题解决方法

MySQL4.1及其以上版本中中文问题比较麻烦,有时候在QT中使用会出现问号或者乱码,现在说明一下在Qt中如何正确地配合使用。 先在MySQL中建表,使用中文,一般情况下就两种,GB(GB2312或者GBK...

鉴客
2010/09/09
225
1
RedHat Linux下QT平台MySQL数据库开发环境配置

这篇文章比较老,而且还是Qt3的版本,但过程是差不多的,贴出来以供参考。 由于之前安装RedHat的时候是自动选择安装了mysql数据库以及QT designer,这一阵子用它的时候却因为它在数据库连接中...

华宰
2010/11/05
1K
1
qt中为何识别不了qsqloci4d.dll和qsqloci4d.lib,但是可以识别qsqloci.dll和qsqloci.lib

如题, 第一步: F:Qt4.8.4opensourcepluginssqldrivers文件夹中放置qsqloci4d.dll和qsqloci4d.lib,QStringList drivers = QSqlDatabase::drivers();无法查看到qoci驱动 第二步:F:Qt4.8.4......

wang191X
2013/11/15
390
1
qt实现-给SQLITE添加自定义函数

需要使用sqlite里的password对某个字段进行加密,由于使用的sqlite是由QT封装好的QSqlDatabase,没有发现加载扩展函数的方法,所以自己实现了一个。 在网上也没找到相应的参考,就自己查官方文...

quanwei9958
2014/12/21
0
0
抓狂!QT5.5连接mysql数据库问题

先上代码: QSqlDatabase data_base = QSqlDatabase::addDatabase("QMYSQL"); data_base.setHostName("10.18.96.31"); //设置主机地址 data_base.setPort(3306); //设置端口 data_base.setD......

鸣泽晨
2015/07/07
7.3K
9
QT 用QSqlRelationalTableModel 创建一个带外键的表,现象跟教材不同?求各位大神指导!

QSqlRelationalTableModel,该类为单张的数据库表提供了一个可编辑的数据模型,它支持 外键。 我们还是新建 Qt4 Gui Application 工程,我这里工程名为 relationalTableModel ,然后选 中QtS...

woshinide322
2013/04/16
663
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

c++ qt 组播总结

每个人都有不同的认知规律和习惯, 有的人喜欢搞一套严密的大理论, 论述起来滔滔不绝, 不管自己懂不懂, 反正读者/听者是没搞懂。 有的人喜欢从实践出发, 没看到代码, 不运行一下, 不看...

backtrackx
8分钟前
0
0
Sublime text2安装json格式化插件SublimePrettyJson[Windows]

一、下载SublimePrettyJson插件包 https://github.com/dzhibas/SublimePrettyJson 二、将下载的文件解压放到在package目录下面 C:\Users\lucky\AppData\Roaming\Sublime Text 3\Packages 每个......

lazy~
8分钟前
0
0
安装vue-cli 报4058错误

1. 4058是网络代理错误。 安装淘宝源修改一下就可以了: npm --registry https://registry.npm.taobao.org info underscore 改为cnpm执行: cnpm install --global vue-cli 安装成功: 试试版...

MrBoyce
9分钟前
0
0
CPU飙升分析

1、top -----看具体的进程 2、top -H -p pid ------该进程的线程 3、printf 0x%x 15248 ------将线程改为16进制 4、jstack 进程...

北极之北
12分钟前
1
0
新生代Eden与两个Survivor区的解释

聊聊JVM的年轻代 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我...

浮躁的码农
14分钟前
0
0
【JVM】JSTATD结合Java VisualVM进行远程监控JVM运行情况(二)

内存泄露指的是程序中动态分配内存给一些临时对象,但是对象不会被GC(java垃圾回收机制gabage collection)所回收,它始终占用内存。即被分配的对象很大但已无用; 内存溢出指的是程序运行过...

大白来袭
17分钟前
2
0
聊聊ribbon的超时时间设置

序 本文主要研究一下ribbon的超时时间设置 配置 实例 ribbon: ReadTimeout: 10000 ConnectTimeout: 10000 MaxAutoRetries: 0 MaxAutoRetriesNextServer: 1 eureka: enabled: ......

go4it
25分钟前
0
0
一行代码结果叹为观止,能做到这么极致的也只有python了

Python 这门语言非常的有趣,不仅可以做高大上的人工智能、大数据、机器学习。还可以用来做 Web、爬虫。还有其它很多的应用。今天我就给大家展示下一行 Python 代码都可以做些什么。 一行打印...

猫咪编程
29分钟前
2
0
KingShard使用

对于kingshard的功能,在git中可以看到明确的功能说明 主要功能: 1. 基础功能 支持SQL读写分离。 支持透明的MySQL连接池,不必每次新建连接。 支持平滑上线DB或下线DB,前端应用无感知。 支...

mickelfeng
31分钟前
0
0
Linux 下 查找某个字符串

如果你想在当前项目下 查找 "test" 这个字符串,可以这样: grep -rn "test" * * : 表示当前目录所有文件,也可以是某个文件名-r 是递归查找-n 是显示行号-R ...

nsns
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部