微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

QSqlDatabase:QMYSQL驱动程序未在Ubuntu 15.04 64位上加​​载

在Ubuntu 15.04 64位中,我安装了qt5.6(在线安装程序),并试图将我的开发环境从Windows 7迁移到Linux,但是我遇到了以下情况:

sqlDatabase: QMysqL driver not loaded

在这之后,我设法find~/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

也许这就是问题所在。 有人能证实吗? 我应该如何继续?

ReadFile()可能有一个超时?

应用程序分段错误,仅在使用MinGW在Windows上编译时

如何查找使用c#安装的应用程序的版本

在Mac OS X中ftruncate不能在POSIX共享内存上工作

Linux C ++ LibUSB在USB HUB中写入寄存器

pthread中两个线程之间的通信

find已经在C程序中使用过的所有库的列表(.exe)

后台任务同时运行时在前台触发事件?

有没有办法使row.DefaultCellStyle.BackColor固定,尽pipe重绘?

Linux编程:文件所在的设备

首先,请仔细检查您是否安装了包含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插件; 用这个新的覆盖旧的。

有两个修复这个问题。 首先尝试找到位于您的qt目录中的qtbase文件夹,并尝试运行./configure -plugin-sql-MysqL,如果它们丢失,将激活驱动程序。

如果这不能解决你的问题,我建议你仔细检查你的代码,并尝试运行一个连接到sql数据库的Qt例子。 即修改连接到本地sqlite数据库的示例代码,将参数更改为MysqL。 如果这个例子没有抛出“Driver not loaded error”,那么按照下面的步骤进行操作。

确保你正在使用QsqlDatabase的静态函数,而不是使用

QsqlDatabase *db = new QsqlDatabase(); db->addDatabase("QMysqL");

你应该做的

QsqlDatabase db = QsqlDatabase::addDatabase("QMysqL");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐