我已经在我的kali linux中安装了Qt 5.3.2 64位(基于debian),而且我在连接MySQL数据库时遇到了一些麻烦。
首先,由于某种原因,预构建的qsqlmysql qt驱动程序依赖于libmysqlclient16(ldd表示找不到libmysqlclient_r.so.16)而不是默认带有此发行版的libmysqlclient18(libmysqlclient.so.18)!创建一个符号链接并将其命名为libmysqlclient_r.so.16并不起作用。 所以,我为debian(挤压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那里)
答案 0 :(得分:0)
只需重建当前平台的mysql插件即可。转到$QTDIR/src/plugins/sqldrivers/mysql/
运行:qmake "LIBS+=-L/usr/lib/ -lmysql" "INCLUDEPATH+=/usr/include/" mysql.pro && make
应该没问题。这应该使用系统上最新的mysql-library为Qt构建mysql-plugin。您可能必须更改与已安装系统对应的LIBS / INCLUDEPATH。
- Sebastian Lange
我试图避免这种情况(因为我非常懒惰)但是......在尽可能多地更新所有与mysql相关的内容之后以及在确定为什么在构建新插件时没有找到类似-lmysqlclient_r的内容之后,它工作得很好;)... - RuiDo