簡體   English   中英

QT 5.7 MySQL驅動程序未加載

[英]QT 5.7 MySQL driver not loaded

有很多與此主題相關的問題/答案,但是我已經嘗試了所有已發布的解決方案:

系統信息 :

  • Ubuntu Gnome 16.10 x86-64

  • MYSQL版本:

    適用於Linux(x86_64)的mysql Ver 14.14 Distrib 5.7.15,使用EditLine包裝器

注意:每次嘗試最終都會顯示此錯誤消息

QSqlDatabase:未加載QMYSQL驅動程序

QSqlDatabase:可用的驅動程序:QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7

嘗試過:

安裝QT 4軟件包:

apt-get install libqt4-sql-mysql

安裝QT 5軟件包:

apt-get install libqt5sql5-mysql

刪除並安裝libmysqlclient-dev

$ sudo apt-get purge libmysqlclient-dev
$ sudo apt-get install libmysqlclient-dev

嘗試創建符號鏈接 ,如下所示:

#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

我只是為了防萬一

$ sudo ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20 libmysqlclient_r.so 

插件目錄的內容:

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文件:

QT += sql

碼:

#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;
    }

在我的項目中,我嘗試過:

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL3");

以防萬一,沒有運氣

我還已經將libmysqlclient.so文件復制到我的插件目錄,也沒有用(在缺少庫路徑的情況下進行了嘗試,等等)。

我不知道如何繼續下去,任何建議都將有所幫助

好了,解決方案並不容易,但必須完成。

我不得不重新編譯驅動程序!

以此為指導。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM