使用DBeaver时因驱动太老查不到数据库及两种解决方法

今天连接ClickHouse和tiDB时查询数据库报错,当时下载的是23版本的,因为驱动太老了所以报错,接着我换成了25.2.0版本的,可以顺利连接tiDB了(也可以在驱动管理中手动更换驱动),但是ClickHouse依旧查询报错。

 SQL 错误 [HY000]: Failed to read value for column log_doc

显示的是找到了库,但是读某一列数据时出错了

我怀疑大概率还是驱动问题,因为我之前下了23版本,卸载安装25版本以后发现数据依旧存在,那驱动也有可能还是老驱动。接着我去手动下载更新驱动,但是失败了,没下载下来。

然后我先除去这个列

-- 不直接查所有字段,先查其他字段确认
SELECT * EXCEPT(log_doc) FROM siemv3.collection2_analyzed_log_cluster LIMIT 10;

发现其他的数据都可以查出来,那问题应该出现在这里,然后我检查了表的结构看看 log_doc 的定义是什么类型
SHOW CREATE TABLE siemv3.collection2_analyzed_log_cluster;

发现返回的是json类型
然后我发现两个解决办法,第一种当然就是换驱动,是根本解决方法,将驱动换成了0.3.2-patch11

第二种是在偶然间问ai发现的可行方法,要在 DBeaver 连接 ClickHouse 的 JDBC URL 中通过参数解决 JSON 格式识别问题。
在 DBeaver 建立新连接或编辑现有连接时,选择 “URL” 方式连接 ,并使用以下 JDBC URL 模板:
jdbc:clickhouse://<host>:<port>/<database>?<parameter1>=<value1>&<parameter2>=<value2>
<host> 服务器地址 你的 ClickHouse 服务器 IP 或域名
<port> 端口号 通常是 8123(HTTP 协议)
<database> 数据库名 你要连接的数据库名称
<parameterX> 参数名 比如 decompress、json_named_tuple_encoding
<valueX> 参数值 比如 0、string
posted on 2026-03-10 18:24  淮竹i  阅读(125)  评论(0)    收藏  举报