使用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 |
浙公网安备 33010602011771号