ClickHouse异常解决-code: 1002

Posted 每天学习一点点的躺平程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ClickHouse异常解决-code: 1002相关的知识,希望对你有一定的参考价值。

项目场景:

错误 [1002]:
org.springframework.jdbc.UncategorizedSQLException: \\n### Error querying database. Cause: ru.yandex.clickhouse.except.ClickHouseUnknownException: ClickHouse exception, code: 1002, host: 端口号, port: 8123; 端口号:8123 failed to respond\\n### The error may exist in class path resource [mapper/monitor/IotDeviceDataMapper.xml]\\n### The error may involve defaultParameterMap\\n### The error occurred while setting parameters

问题描述

查询ClickHouse数据时部分报异常,部分不报异常,

 <!-- clickhouse 版本 -->
        <dependency>
            <groupId>ru.yandex.clickhouse</groupId>
            <artifactId>clickhouse-jdbc</artifactId>
            <version>0.1.53</version>
        </dependency>

原因分析:

错误的sql复制下来粘贴导客户端也执行不了,报和项目同样的错

通过对sql分析结果

1,发现sql中多了许多ClickHouse识别不了的占位符空格等字段

解决方案:

把占位符之类的数据想办法去掉,
其中有两个连续的foreach 和 if 标签
利用代码逻辑去掉连续的标签,

经过修改打印的sql正确,项目运行发现还是会报错,
复制打印报错的sql放到客户端中能够执行成功
经过分心是jdbc版本出现问题
修改版本

        <!-- clickhouse -->
        <dependency>
            <groupId>ru.yandex.clickhouse</groupId>
            <artifactId>clickhouse-jdbc</artifactId>
            <version>0.2.6</version>
        </dependency>

也许直接改变版本也能把占位符自动给去掉,但是没有经过验证。后期在遇到类似的问题可以验证一下。

clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创)

复杂查询可能出现异常类似于,有时你可能是在创建视图,也可能会出现下面的错误:
Code: 352. DB::Exception: Received from localhost:9000. DB::Exception: Cannot refer column ‘表名.字段名‘ to table.

首先clickhouse 在当前版本(version 19.17.4.11)中不支持exists用法,如果遇到了exists用法,应该把它改为in的语法.

因为查询语句比较复杂,这个整体的复杂查询语句可以在mysql中查询, 其中的部分嵌套语句也可以在mysql和clickhouse中查询.
但是整体的复杂查询却不能在clickhouse中查询,会报上面提示的错误.
其中内部的嵌套查询用了多个表的join 和 inner join 条件用的 on (表名.列名 = 表名1.列名1) 等多表连接

最后的解决方案:
将内部的查询单独取出来创建一个单独的小视图.
然后原来的整体的复杂查询中内部嵌套的查询替换为这些小视图,这个整体的复杂查询语句就会变得简单,再运行这个查询,就不会再报这个错误了.

以上是关于ClickHouse异常解决-code: 1002的主要内容,如果未能解决你的问题,请参考以下文章

Apache Flink写入Clickhouse报错 code: 1002, ip:8123 failed to respond

Apache Flink写入Clickhouse报错 code: 1002, ip:8123 failed to respond

clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创)

ClickHouse exception code:516

clickhouse[未解决] clickhouse Exception: Table is in readonly mode

按分区过滤 system.parts (ClickHouse) 时出现异常