首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT5.7未加载MySQL驱动程序

QT5.7未加载MySQL驱动程序
EN

Stack Overflow用户
提问于 2016-10-19 11:53:13
回答 1查看 3.5K关注 0票数 0

关于这个主题有很多问题/答案,但我已经尝试了所有张贴的解决方案:

系统信息:

  • Ubuntu Gnome 16.10 x86-64
  • MYSQL版本: mysql 14.14远端5.7.15,用于Linux (x86_64),使用EditLine包装

注意:每次尝试都会收到以下错误消息

QSqlDatabase: QMYSQL驱动程序未加载 QSqlDatabase:可用驱动程序: QSQLITE QMYSQL3 QPSQL QPSQL7

Tried:

安装QT 4的软件包:

代码语言:javascript
复制
apt-get install libqt4-sql-mysql

安装QT 5的软件包:

代码语言:javascript
复制
apt-get install libqt5sql5-mysql

拆卸和安装libmysqlclient-dev

代码语言:javascript
复制
$ sudo apt-get purge libmysqlclient-dev
$ sudo apt-get install libmysqlclient-dev

尝试创建符号链接,如下所示:

代码语言:javascript
复制
#locate libmysqlclient file

$ locate libmysqlclient

/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20.3.2
/usr/share/doc/libmysqlclient20
/usr/share/doc/libmysqlclient20/NEWS.Debian.gz
/usr/share/doc/libmysqlclient20/changelog.Debian.gz
/usr/share/doc/libmysqlclient20/copyright
/var/cache/apt/archives/libmysqlclient20_5.7.15-0ubuntu2_amd64.deb
/var/lib/dpkg/info/libmysqlclient20:amd64.list
/var/lib/dpkg/info/libmysqlclient20:amd64.md5sums
/var/lib/dpkg/info/libmysqlclient20:amd64.shlibs
/var/lib/dpkg/info/libmysqlclient20:amd64.symbols
/var/lib/dpkg/info/libmysqlclient20:amd64.triggers

#cd to the dir, and create link
$ cd /usr/lib/x86_64-linux-gnu
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20 libmysqlclient_r.so

这个我只是以防万一

代码语言:javascript
复制
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20 libmysqlclient_r.so 

插件目录的内容:

代码语言:javascript
复制
ll /opt/qt/QT-5.7/5.7/gcc_64/plugins/sqldrivers/
total 988
drwxrwxr-x 1 cx cx     84 Oct 17 15:58 ./
drwxrwxr-x 1 cx cx    504 Oct 17 15:58 ../
-rwxr-xr-x 1 cx cx 851008 Jun 10 11:10 libqsqlite.so*
-rwxr-xr-x 1 cx cx  75424 Jun 10 11:10 libqsqlmysql.so*
-rwxr-xr-x 1 cx cx  79368 Jun 10 11:10 libqsqlpsql.so*

项目信息:

添加到.pro文件:

代码语言:javascript
复制
QT += sql

代码:

代码语言:javascript
复制
#include <QtSql>
#include <QSqlDriver>
#include <qsqldatabase.h>
#include <QSqlError>
#include <QPluginLoader>
#include <cstdio>

using namespace std;

//some irrelevant project code in between

QString rootPass = getRootPassword();
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    //    db.setDatabaseName(DBName);
    db.setUserName("root");
    db.setPassword(rootPass);

    if (!db.isValid()){
        QSqlError err = db.lastError();
        cout << endl << "!DB ERROR: "<< err.text();
        cout.flush();
    }

    //qsqlerror err: unused4 : 21985
    //qsqlerror err: unused3 : 2757134240 (2757134240)

    if (db.open()){
        //do things to database
    }
    else
    {
        cout << "error opening database" << endl;
    }

在我的项目中,我尝试过:

代码语言:javascript
复制
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

代码语言:javascript
复制
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL3");

以防万一,没有运气

我还将libmysqlclient.so文件复制到我的插件目录中,也没有工作(在库路径丢失的情况下尝试了这种情况,等等)。

我不知道如何继续下去,任何建议都会有帮助。

EN

回答 1

Stack Overflow用户

发布于 2016-10-19 12:40:59

嗯,解决办法不容易,但必须要做。

我必须重新编译司机!

使用作为指南。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40130698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档