QSqlDatabase:QMYSQL驱动程序未在Ubuntu 15上加载,04 64位

e5nqia27  于 2023-04-29  发布在  Mysql
关注(0)|答案(6)|浏览(173)

在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

也许这就是问题所在。有人能证实吗?我该怎么做?

qvtsj1bj

qvtsj1bj1#

首先,仔细检查您是否安装了包含libssl.solibcrypto.solibmysqlclient_r.so的软件包(看起来您安装了最后一个,但很可能您也安装了前两个,但只需仔细检查)。
然后,你的问题是,你有一个不同的SONAME的共享对象,签署他们的二进制不兼容的插件与Qt,因此需要重新编译。
因此:
1.安装上述软件包的 * 开发版本 *(libssl-devmysql-client-dev或类似版本)。
1.从Qt安装中运行MaintenanceTool,并确保选择安装Qt的 * 源代码 *。
1.进入QTDIR/5.6/Src/qtbase/src/plugins/sqldrivers/mysql/
1.运行 rightqmake,i.即来自Qt的安装的一个(不是系统范围的一个或类似的)。最好的方法是提供它的完整路径:QTDIR/5.6/gcc_64/bin/qmake
1.运行make。希望这将只是工作;如果它抱怨缺少一些库,请安装它们并重新运行make
1.这应该已经产生了一个新的libqsqlmysql.so插件;用这个新的覆盖旧的

qij5mzcb

qij5mzcb2#

我用的是Ubuntu 18。04.4并使用系统的Qt5编译我的项目。安装libqt5sql5-mysql包后,驱动程序加载成功。

sudo apt-get install libqt5sql5-mysql
lyfkaqu1

lyfkaqu13#

此问题有两个修复方法。首先尝试定位qt目录中的qtbase文件夹,然后尝试运行。/configure -plugin-sql-mysql,如果缺少驱动程序,它将激活驱动程序。
如果这不能解决你的问题,我建议你仔细检查你的代码,并尝试运行一个Qt示例,它连接到SQL数据库。即修改连接到本地SQLite数据库的示例代码,将参数更改为MySQL。如果这个例子没有抛出'驱动程序未加载错误',那么按照下面的步骤。
确保您使用的是QSqlDatabase i的静态函数。而不是使用

QSqlDatabase *db = new QSqlDatabase(); 
db->addDatabase("QMYSQL");

你应该做的

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
tcomlyy6

tcomlyy64#

我也有同样的问题与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

flmtquvp

flmtquvp5#

要在Raspberry Pi上使用MySql和PyQt5,可以安装:

sudo apt-get install libqt5sql5-mysql

sudo apt-get install libqt5sql5-mysql
enxuqcxy

enxuqcxy6#

要解决MYSQL驱动程序未加载,如果您没有MYSQL驱动程序与您的Qt安装可用:

首先:

尝试安装libqt5sql5-mysql,这是最简单的方法。
$ sudo apt-get install libqt5sql5-mysql
如果问题仍然存在,那么可能您已经从源代码安装了Qt,并且没有使用MySQL驱动程序进行配置。您必须自己构建和安装驱动程序。下面是如何做到这一点:
以下命令在我的VM中运行:ubuntu20.04与Qt5。14.0已安装

1.安装依赖

$ sudo apt install libmysqlclient-dev

2.找到Qt路径。

它看起来像Qt[version]/[version]/,里面有一个文件夹Srcgcc_64。将此路径保存到shell变量qtpath,例如,我的路径是:
$ qtpath=/opt/Qt5.14.0/5.14.0

3. Make && make安装mysql驱动(必要时使用sudo):
$ cd $qtpath/Src/qtbase/src/plugins/sqldrivers 
$ sudo $qtpath/gcc_64/bin/qmake sqldrivers.pro 
$ sudo make 
$ sudo make install

在此之后,您将使用您的Qt版本构建并安装SQL驱动程序。但是,如果您有**“错误:不能在顶级生成中单独配置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驱动程序。

相关问题