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驱动未加载错误的主要内容,如果未能解决你的问题,请参考以下文章

Qt5、C++:未加载 QMYSQL 驱动程序

qt 5.8 sql 连接错误:Windows 10 上未加载 QMYSQL 驱动程序

同样,未加载 QT 5.12.2 QMYSQL 驱动程序。图书馆虽然

Qt:Windows 10:未加载 QMYSQL 驱动程序

QT连接MySQL报驱动未加载问题

QT连接MySQL报驱动未加载问题