QSqlDatabase:未在 Ubuntu 15.04 64 位上加载 QMYSQL 驱动程序
QSqlDatabase: QMYSQL driver not loaded on Ubuntu 15.04 64bits
在 Ubuntu 15.04 64 位中,我安装了 Qt5.6(在线安装程序),在尝试将我的开发环境从 Windows 7 移动到 Linux 时,我遇到了以下问题:
SqlDatabase: QMYSQL driver not loaded
在 this 之后,我设法找到了 ~/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
或类似的)。
运行 MaintenanceTool
来自你的 Qt 安装,并且一定要 select 安装 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 示例之一。 IE。修改连接到本地 SQLite 数据库的示例代码,将参数更改为 MySQL。如果此示例未抛出 'Driver not loaded error',则按照以下步骤操作。
确保您使用的是 QSql 数据库的静态函数,即而不是使用
QSqlDatabase *db = new QSqlDatabase();
db->addDatabase("QMYSQL");
你应该做
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
我的 Qt5.11.1
也有同样的问题,我的 OS 是 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上与PyQt5一起使用MySql,可以安装:
sudo apt-get install libqt5sql5-mysql
和
sudo apt-get install libqt5sql5-mysql
在 Ubuntu 15.04 64 位中,我安装了 Qt5.6(在线安装程序),在尝试将我的开发环境从 Windows 7 移动到 Linux 时,我遇到了以下问题:
SqlDatabase: QMYSQL driver not loaded
在 this 之后,我设法找到了 ~/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
或类似的)。运行
MaintenanceTool
来自你的 Qt 安装,并且一定要 select 安装 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 示例之一。 IE。修改连接到本地 SQLite 数据库的示例代码,将参数更改为 MySQL。如果此示例未抛出 'Driver not loaded error',则按照以下步骤操作。
确保您使用的是 QSql 数据库的静态函数,即而不是使用
QSqlDatabase *db = new QSqlDatabase();
db->addDatabase("QMYSQL");
你应该做
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
我的 Qt5.11.1
也有同样的问题,我的 OS 是 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上与PyQt5一起使用MySql,可以安装:
sudo apt-get install libqt5sql5-mysql
和
sudo apt-get install libqt5sql5-mysql