8

qmysqlQtにドライバーをロードするにはどうすればよいですか? これらの結果を生成する次のコードがあります。

("QSQLITE", "QMYSQL", "QMYSQL3") 
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3

それをロードする方法に関する提案はありますか?

4

9 に答える 9

12

最初にドライバーを確認する必要があります

$ cd /opt/Qt5.2.1/5.2.1/gcc_64/plugins/sqldrivers

次に、いくつかのファイルを見つけることができます

以下のコマンドを使用してライブラリを確認します

$ ldd libqsqlmysql.so

問題が見つかった場合libmysqlclient_r.so.16 => not foundは、ライブラリ依存の問題である可能性があります。

インターネットで少し調べたところ、簡単な方法があります。

$ cd /usr/lib/x86_64-linux-gnu

あなたが見つけたらlibmysqlclient_r.so.18

$ cp libmysqlclient_r.so.18 libmysqlclient_r.so.16
于 2014-04-07T19:37:10.530 に答える
4

sqldriversフォルダーをデバッグフォルダーにコピーするだけで機能し、機能しました!

于 2013-02-06T14:26:44.203 に答える
2

問題を診断してみることができますstrace- QMYSQL ドライバーが機能するには、ランタイム ライブラリの依存関係が必要なようです。

于 2013-02-02T23:47:51.917 に答える
1

を使用QPluginLoaderして、より適切なエラーメッセージを取得できます。

MySQLドライバーで同じ問題が発生したとき、メッセージは「バージョンはこのQtバージョン以外のオプションでコンパイルされました」のようなものでした。

当時QtSDKに同梱されていたQtソースは、そのバイナリと互換性がないようでした。

Qtソースをダウンロードし、自分のバージョンのQtとMySQLドライバーをコンパイルした後、問題は解決しました。

編集:いくつかのサンプルコード。

QPluginLoader loader;
loader.setFileName("/Users/niklaswulf/QtSDK/Qt/4.8.4/plugins/sqldrivers/libqsqlite_debug.dylib");
qDebug() << loader.load();
qDebug() << loader.errorString();

loader.setFileName("/Users/niklaswulf/QtSDK/Qt/5.0.1/5.0.1/clang_64/plugins/sqldrivers/libqsqlite_debug.dylib");
qDebug() << loader.load();
qDebug() << loader.errorString();

5.0.1に対してコンパイルする場合、これは次の出力です。

false 
"The file '/Users/niklaswulf/QtSDK/Qt/4.8.4/plugins/sqldrivers/libqsqlite_debug.dylib' is not a valid Qt plugin." 
true 
"Unknown error"

私も古いメッセージを見つけました:

The plugin '/path/to/some/libqsqlmysql.dylib' uses incompatible Qt library. Expected build key "macosx macx-cocoa g++-4 full-config", got "macosx macx-cocoa g++-4 no-pkg-config"
于 2013-02-03T20:28:38.767 に答える
1
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3

Qt-5.2.0 を使用した fedora20 (64 ビット) で直面した同じ問題で、次の手順に従います。

$ cd /opt/Qt5.2.0/5.2.0/gcc_64/plugins/sqldrivers
$ ls
libqsqlite.so  libqsqlmysql.so

以下のコマンドを使用して、ライブラリの依存関係を確認します。

$ ldd libqsqlmysql.so

私は問題を見つけます:

libmysqlclient_r.so.16 => not found 

ライブラリ依存の問題かもしれません。この問題を解決してください:

ライブラリ ファイルのリンク:

 $ ln -s libmysqlclient_r.so.16.0.0        libmysqlclient_r.so

そしてまた:

$ ln -s libmysqlclient_r.so.16.0.0         libmysqlclient_r.so.16

今は私のために働いています。ではごきげんよう

于 2016-02-27T05:14:13.317 に答える
0

ここに、この問題に関する非常に優れたリンクがいくつかあります。

  1. Unix ベースのシステムで手動でプラグインを作成する (Qt ドキュメントから): http://qt-project.org/doc/qt-5/sql-driver.html

  2. 特にこの問題に関する非常によく書かれたリンク (ソースから Qt をインストールすることを忘れないでください。これは、.run 実行可能ファイルからインストールするときに最初のステップで対応する (非表示の) ボックスをチェックするか、「 qt-everywhere-opensource-src' バージョン): http://adamcavendish.is-programmer.com/posts/40431.html

楽しんで、ペイマン

于 2014-04-07T22:22:29.170 に答える
-2

私の答え:

QSqlDatabase db(QSqlDatabase::addDatabase("QMYSQL"));
db.setDatabaseName("dbname");
db.setHostName("localhost");
db.setUserName("usernm");
db.setPassword("password");

if (db.open())
{
    qDebug() << "SUCCESS!";
    db.close();
}
于 2014-02-27T19:31:27.613 に答える