[英]QSqlDatabase: QMYSQL driver not loaded on Ubuntu 15.04 64bits
在 Ubuntu 15.04 64 位中,我安裝了 Qt5.6(在線安裝程序),在嘗試將我的開發環境從 Windows 7 移動到 Linux 時,我遇到了以下問題:
SqlDatabase: QMYSQL driver not loaded
在此之后,我設法找到了~/Qt/5.6/gcc_64/plugins/sqldrivers/libqsqlmysql.so
然后:
$ ldd libqsqlmysql.so
linux-vdso.so.1 => (0x00007ffffd571000)
libmysqlclient_r.so.16 => not found
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fe94ef24000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fe94ecec000)
libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fe94ead2000)
libssl.so.10 => not found
libcrypto.so.10 => not found
libQt5Sql.so.5 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libQt5Sql.so.5 (0x00007fe94e88d000)
libQt5Core.so.5 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libQt5Core.so.5 (0x00007fe94e17a000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe94df5c000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe94dc4d000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe94d944000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe94d72e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe94d364000)
libicui18n.so.56 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libicui18n.so.56 (0x00007fe94cec9000)
libicuuc.so.56 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libicuuc.so.56 (0x00007fe94cb11000)
libicudata.so.56 => /home/user/Qt/5.6/gcc_64/plugins/sqldrivers/../../lib/libicudata.so.56 (0x00007fe94b12e000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe94af29000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fe94ad27000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fe94ab1f000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fe94a80f000)
/lib64/ld-linux-x86-64.so.2 (0x000056024837f000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fe94a5a2000)
告訴libmysqlclient_r.so.16 => not found
。 事實上,我似乎有一個更新的版本:
find / -name libmysqlclient_r*
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18.1.0
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.a
也許這就是問題所在。 有人能證實嗎? 我應該如何進行?
首先,再次檢查您是否安裝了包含libssl.so
、 libcrypto.so
和libmysqlclient_r.so
的包(看起來您安裝了最后一個,很可能您也安裝了前兩個,但請仔細檢查)。
然后,您的問題是這些共享對象具有不同的 SONAME,表明它們與 Qt 附帶的插件二進制不兼容,因此需要重新編譯。
所以:
安裝上面找到的軟件包的開發版本( libssl-dev
、 mysql-client-dev
或類似的)。
從您的 Qt 安裝運行MaintenanceTool
,並確保選擇安裝 Qt 的源代碼。
進入QTDIR/5.6/Src/qtbase/src/plugins/sqldrivers/mysql/
。
運行正確的qmake
,即來自 Qt 安裝的那個(不是系統范圍的或類似的)。 確保提供完整路徑的最佳方法是: QTDIR/5.6/gcc_64/bin/qmake
。
運行make
。 希望這會奏效™; 如果它抱怨缺少一些庫,請安裝它們並重新運行make
。
現在應該已經生成了一個新的libqsqlmysql.so
插件; 用這個新的覆蓋舊的。
此問題有兩個修復程序。 首先嘗試找到位於您的 qt 目錄中的 qtbase 文件夾,然后嘗試運行 ./configure -plugin-sql-mysql 如果它們丟失,它將激活驅動程序。
如果這不能解決您的問題,我建議您仔細檢查您的代碼並嘗試運行連接到 Sql 數據庫的 Qt 示例之一。 即修改連接到本地 SQLite 數據庫的示例代碼,將參數更改為 MySQL。 如果此示例未引發“驅動程序未加載錯誤”,請按照以下步驟操作。
確保您使用的是 QSqlDatabase 的靜態函數,而不是使用
QSqlDatabase *db = new QSqlDatabase();
db->addDatabase("QMYSQL");
你應該做的
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
我的Qt5.11.1
也有同樣的問題,我的操作系統是Ubuntu16.04
,我通過從這里安裝libmysqlclient18
解決了這個問題
https://launchpad.net/ubuntu/xenial/amd64/libmysqlclient18/5.6.25-0ubuntu1
下載后從下載目錄運行命令,
sudo dpkg -i libmysqlclient18_5.6.25-0ubuntu1_amd64.deb
我正在使用 Ubuntu 18.04.4 並使用系統的 Qt5 編譯我的項目。 我安裝libqt5sql5-mysql
包后,驅動程序加載成功。
sudo apt-get install libqt5sql5-mysql
要在 Raspberry Pi 上使用 MySql 和 PyQt5,可以安裝:
sudo apt-get install libqt5sql5-mysql
和
sudo apt-get install libqt5sql5-mysql
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.