Clickhouse高版本不适配

请附带以下信息:DataEase 版本 v1.18.16、运行方式(安装包运行 )
为了能连上我大版本为24的clickhouse-server,我自定义驱动如下


然后使用这个驱动连接24版本的clickhouse-server时校验能够通过,但是要执行sql会报错如下:

ERROR cat].[localhost].[/].[dispatcherServlet]: 175 - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is io.dataease.plugins.common.exception.DataEaseException: java.sql.SQLException: ru.yandex.clickhouse.ClickHouseDriver] with root cause
java.lang.ClassNotFoundException: ru.yandex.clickhouse.ClickHouseDriver
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)

猜测是选择数据源为clickhouse时,驱动名字就写死了,版本更新换了类名导致不适配

重新创建一个数据源,使用这个自定义驱动。然后拿这个数据源去创建数据集也会报错吗?

在校验的时候能够使用这个上传的驱动去getconnect
但是在执行sql也就是创建数据集用的应该是默认的驱动的名字ru.yandex.clickhouse.ClickHouseDriver而不是新的上传的驱动名字,导致找不到类

会,报错信息同样是java.lang.ClassNotFoundException: ru.yandex.clickhouse.ClickHouseDriver
V2版本能支持高版本

写死的,如下:


无法导入使用高版本的jdbc

这里写的是default驱动的类路径。自定义驱动都是动态加载的。

调用栈及报错如下:

java.lang.ClassNotFoundException: ru.yandex.clickhouse.ClickHouseDriver
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:315)
        at com.alibaba.druid.util.JdbcUtils.createDriver(JdbcUtils.java:681)
        at com.alibaba.druid.pool.DruidDataSource.resolveDriver(DruidDataSource.java:1222)
        at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:891)
        at io.dataease.plugins.datasource.provider.DefaultJdbcProvider.addToPool(DefaultJdbcProvider.java:353)
        at io.dataease.plugins.datasource.provider.DefaultJdbcProvider.handleDatasource(DefaultJdbcProvider.java:221)
        at io.dataease.plugins.datasource.provider.DefaultJdbcProvider.getConnectionFromPool(DefaultJdbcProvider.java:331)
        at io.dataease.plugins.datasource.provider.DefaultJdbcProvider.getTables(DefaultJdbcProvider.java:121)
        at io.dataease.service.datasource.DatasourceService.getTables(DatasourceService.java:437)
        at io.dataease.service.datasource.DatasourceService$$FastClassBySpringCGLIB$$2ccad08e.invoke(<generated>)


稍等我测试下

我这边复现了,已反馈至GitHub ISSUE,点击链接持续跟进:
[Bug]ClickHouse 自定义驱动创建数据集报错 · Issue #8423 · dataease/dataease (github.com)

1 个赞