QSqlDatabase:QMYSQL 驱动程序未加载在 Ubuntu 15.04 64 位上
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
插件;用这个新插件覆盖旧的插件。
我正在使用 Ubuntu 18.04.4 并使用系统的 Qt5 编译我的项目。安装软件包后,驱动程序已成功加载libqt5sql5-mysql
。
sudo apt-get install libqt5sql5-mysql
此问题有两个修复程序。首先尝试找到位于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
要在Raspberry Pi上将MySql与PyQt5一起使用,可以安装:
sudo apt-get install libqt5sql5-mysql
和
sudo apt-get install libqt5sql5-mysql
要解决未加载MYSQL驱动程序的问题,以及如果您的Qt安装中没有可用的MYSQL驱动程序:
首先也是最重要的:
尝试安装libqt5sql5-mysql
,这是最简单的方法。
$ sudo apt-get install libqt5sql5-mysql
如果问题仍然存在,那么也许您已经从源代码安装了Qt并且没有使用MySQL驱动程序对其进行配置。您必须自己构建并安装驱动程序。这是操作方法:
这些命令在我的 VM 中运行: 安装了 Qt5.14.0 的 ubuntu20.04
1. 安装依赖项
$ sudo apt install libmysqlclient-dev
2. 找到您的 Qt 路径。
看起来像Qt[version]/[version]/
,里面会有一个文件夹Src
和gcc_64
.将此路径保存到 shell 变量qtpath
,例如,我的是:
$ qtpath=/opt/Qt5.14.0/5.14.0
3. 制作 &&让安装 mysql 驱动程序(如有必要,请使用sudo
):
$ cd $qtpath/Src/qtbase/src/plugins/sqldrivers
$ sudo $qtpath/gcc_64/bin/qmake sqldrivers.pro
$ sudo make
$ sudo make install
在此之后,您将构建一个SQL驱动程序,并与您的Qt版本一起安装。但是,如果您有"错误:您无法在顶级版本中单独配置 sqldrivers"。这意味着您之前已经运行过configure
脚本。要解决此问题,请运行:
$ cd $qtpath/Src
$ sudo ./configure -sql-mysql MYSQL_INCDIR=/usr/include/mysql MYSQL_LIBDIR=/usr/lib/x86_64-linux-gnu MYSQL_PREFIX=/usr/lib/x86_64-linux-gnu
如果成功,您将在配置说明中MySQL......Yes
。然后再次运行上面的步骤 3 以仅构建和安装 MySQL 驱动程序。
- 在 Ubuntu 服务器上运行 QT 应用程序时崩溃
- 在 ubuntu 焦点上编译虚幻引擎 4.25 时出错
- 在 Slackware 14.2 64 位上使用 ACE 库编译错误
- 无法在Windows 7 64位上安装CUDA工具包9.1.85
- 如何在 CentOS 7.3 64 位位上安装提升库
- 在 x86 32 位上的静态类实例中解决此问题
- 如何在Linux(Ubuntu)上获得C/C 的完整文档路径
- 无法在 Windows 7、32 位上使用 tdm-gcc 构建 cpp 文件(表示 exe 不兼容)
- C++14 是否定义了无符号 int 的填充位上的按位运算符的行为
- NDK 问题:在 32 位上崩溃,在 64 位上不一致
- Ubuntu服务器上的C WT框架
- 我正在尝试在Ubuntu 14上安装libgtk2.0-dev,但出现了一些错误
- 代码调用反向函数不会在Ubuntu 18上的G 或Clang 上编译,但神秘地在Mac OSX上使用
- __xstat 64 位上的动态符号解析错误
- 使用 Rcpp 在 Ubuntu Xenial 上抛出 std::runtime_error 时出现 Segfault
- 带有ATL子类的Windows 10 64位上的随机崩溃
- Exe不是有效的win32应用程序,但在64位上运行
- QSqlDatabase:QMYSQL 驱动程序未加载在 Ubuntu 15.04 64 位上
- 在 Ubuntu 12.04 32 位上安装和编译 ZeroMQ/ZMQ/0MQ
- 如何在 64 位 Ubuntu 系统上安装简单的英特尔 C/C++ 编译器