【问题标题】:QT 5.3.2 linux libmysqlclientQT 5.3.2 linux libmysqlclient
【发布时间】: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


【解决方案1】:

只需为您当前的平台重建 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。 ——塞巴斯蒂安·兰格

我试图避免这种情况(因为我非常懒惰)但是......在尽可能多地更新了与 mysql 相关的所有内容并弄清楚为什么在构建新插件时它没有找到像 -lmysqlclient_r 这样的东西之后,它工作得很好;)… ——瑞多

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多