You need to enable JavaScript to run this app. QuestDB通过PDO查询返回乱码错误值 PostgreSQL查询正常问题求助
优惠活动
大模型
产品
解决方案
定价
更多

QuestDB通过PDO查询返回乱码错误值 PostgreSQL查询正常问题求助

问题原因

你遇到的是QuestDB 6.0.2版本PostgreSQL通信协议实现的已知bug:多列结果返回时,数值、时间类型字段的二进制编码对齐规则和PHP PDO的pgsql驱动预期不匹配,导致驱动解析字段内容时读取偏移错误,才会出现数值不对、乱码的情况;单字段查询时对齐规则刚好符合驱动预期,所以返回正常。

解决方案

1. 优先升级QuestDB版本

该兼容性bug已经在6.0.4及之后的稳定版本修复,直接升级QuestDB到最新官方稳定版即可完全解决问题,无需修改现有业务代码,是最稳妥的方案,也能避免旧版本的其他已知问题,更适合数据迁移场景使用。

2. 临时兼容方案(无法升级版本时使用)

如果暂时没有升级条件,可以用以下任意一种方法临时规避问题:

  • 配置PDO属性强制所有返回值转字符串:在初始化PDO后添加代码
    $pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
    
    让pdo驱动不解析二进制类型,所有字段都按字符串读取,可解决编码偏移问题。
  • 查询时显式将非字符串类型转为字符串:改写SQL语句,把数值、时间字段都转成字符串类型返回,例如:
    SELECT personnel_id::VARCHAR, ts::VARCHAR, date::VARCHAR, name, value::VARCHAR FROM test_table
    
  • 改用QuestDB的HTTP REST接口查询:直接向QuestDB默认9000端口的/exec接口发送查询请求,返回JSON格式结果,不存在通信协议兼容性问题。

内容的提问来源于stack exchange,提问作者HC_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 20:06:05