Qt5 MYSQL驱动未加载错误
Posted
技术标签:
【中文标题】Qt5 MYSQL驱动未加载错误【英文标题】:Qt5 MYSQL driver not loaded error 【发布时间】:2018-03-18 21:00:25 【问题描述】:我有一个 Fedora 27 64 位操作系统,并且正在尝试运行一个基于 Qt 的应用程序,该应用程序试图访问 mysql 服务器(我可以从命令行成功访问)。但我的应用显示这些错误:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
ERROR: DATABASE: Open failed with error code [-1]. Driver error [Driver not loaded]. Database error [Driver not loaded]
我已经尝试了所有可以在网上找到的方法,但无法解决这个问题。当我检查 libqsqlmysql.so 依赖项时,我看到:
[root@host lib64]# ldd /home/administrator/Qt/5.7/gcc_64/plugins/sqldrivers/libqsqlmysql.so
/home/administrator/Qt/5.7/gcc_64/plugins/sqldrivers/libqsqlmysql.so: /lib64/libmysqlclient_r.so.16: version `libmysqlclient_16' not found (required by /home/administrator/Qt/5.7/gcc_64/plugins/sqldrivers/libqsqlmysql.so)
linux-vdso.so.1 (0x00007fffde4ef000)
libmysqlclient_r.so.16 => /lib64/libmysqlclient_r.so.16 (0x00007f3188fd8000)
libz.so.1 => /lib64/libz.so.1 (0x00007f3188dc1000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f3188b8b000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f3188971000)
libssl.so.10 => /lib64/libssl.so.10 (0x00007f3188705000)
libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f31882a7000)
libQt5Sql.so.5 => /home/administrator/Qt/5.7/gcc_64/plugins/sqldrivers/../../lib/libQt5Sql.so.5 (0x00007f3188062000)
libQt5Core.so.5 => /home/administrator/Qt/5.7/gcc_64/plugins/sqldrivers/../../lib/libQt5Core.so.5 (0x00007f3187944000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3187725000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f318739f000)
libm.so.6 => /lib64/libm.so.6 (0x00007f318704a000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f3186e33000)
libc.so.6 => /lib64/libc.so.6 (0x00007f3186a50000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f318684c000)
libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007f31865e0000)
libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007f3186158000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007f3185f55000)
libicui18n.so.56 => /home/administrator/Qt/5.7/gcc_64/plugins/sqldrivers/../../lib/libicui18n.so.56 (0x00007f3185abb000)
libicuuc.so.56 => /home/administrator/Qt/5.7/gcc_64/plugins/sqldrivers/../../lib/libicuuc.so.56 (0x00007f3185703000)
libicudata.so.56 => /home/administrator/Qt/5.7/gcc_64/plugins/sqldrivers/../../lib/libicudata.so.56 (0x00007f3183d20000)
libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x00007f3183b1e000)
librt.so.1 => /lib64/librt.so.1 (0x00007f3183916000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f3183602000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3189440000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f318338f000)
果然没有 /lib64/libmysqlclient_r.so.16 在我的系统上。 DNF 说没有提供这个文件!所以我尝试将 /lib64/libmysqlclient_r.so 符号链接到 /lib64/libmysqlclient_r.so.16 但仍然没有乐趣。
有人可以提供解决方案吗?
【问题讨论】:
你用的是libqsqlmysql
的32位还是64位
64 位 libqsqlmysql.so
检查this answer
你安装qt5-qtbase-mysql rpm吗?点赞:[rpmfind.net/linux/rpm2html/…并通知x86 / x64
是的,我通过 DNF 安装了 qt5-qtbase-mysql。
【参考方案1】:
在不同站点上进行大量搜索后,共识是从源代码(随 Qt Creator 安装)重新编译 Qt sql 驱动程序。切换到 SQL 驱动程序的源目录,然后“make”和“make install”
之后错误就消失了。
忽略所有关于复制/符号链接不同 .so 文件的建议。它不起作用(不再)。
【讨论】:
以上是关于Qt5 MYSQL驱动未加载错误的主要内容,如果未能解决你的问题,请参考以下文章
qt 5.8 sql 连接错误:Windows 10 上未加载 QMYSQL 驱动程序