【发布时间】:2014-12-18 12:50:58
【问题描述】:
我在我的 kali linux(基于 debian)中安装了 Qt 5.3.2 64bit,但在连接 MySQL 数据库时遇到了一些问题。
首先,由于某种原因,预构建的 qsqlmysql qt 驱动程序依赖于 libmysqlclient16(ldd 表示未找到 libmysqlclient_r.so.16)而不是该发行版默认附带的 libmysqlclient18(libmysqlclient.so.18)!创建符号链接并将其命名为 libmysqlclient_r.so.16 不起作用。 所以,我为 debian (squeeze iirc) 寻找了一个 libmysqlclient16 并安装了它!
ruido@Developer2:~$ ldd /opt/Qt5.3.2/5.3/gcc_64/plugins/sqldrivers/libqsqlmysql.so
linux-vdso.so.1 => (0x00007fff4a9ce000)
libmysqlclient_r.so.16 => /usr/lib/libmysqlclient_r.so.16 (0x00007ffb99a3d000)
libQt5Sql.so.5 => /opt/Qt5.3.2/5.3/gcc_64/plugins/sqldrivers/../../lib/libQt5Sql.so.5 (0x00007ffb997fc000)
(...)
它可以工作,但有一个大问题......它可能已经过时了,我需要用它来连接到 >5.6 的 mysql 服务器,以便能够在日期时间上使用毫秒(从 mysql 5.6.4 开始)。 libmysqlclient 似乎不支持这一点,我从数据库中获取的每个时间戳都带有用零填充的毫秒数。
所以问题是: 有没有办法让 qsqlmysql 寻找 libmysqlclient18 呢? (因为我在常规的 debian wheezy 上尝试过,它看起来是 libmysqlclient18 那里的)
【问题讨论】:
-
只需为您当前的平台重建 mysql 插件。转到
$QTDIR/src/plugins/sqldrivers/mysql/运行:qmake "LIBS+=-L/usr/lib/ -lmysql" "INCLUDEPATH+=/usr/include/" mysql.pro && make应该没问题。这应该使用系统上最新的 mysql 库为 Qt 构建 mysql 插件。您可能需要更改与您安装的系统相对应的 LIBS/INCLUDEPATH。 -
我试图避免这种情况(因为我非常懒惰)但是......在尽可能多地更新了所有与 mysql 相关的内容并弄清楚为什么它没有找到像 -lmysqlclient_r 这样的东西之后在构建新插件时,它工作得很好;)谢谢! @SebastianLange 如果您愿意,可以创建一个正式的答案;)
标签: mysql linux qt mysql-connector