尝试在DBeaver里连接tdengine

那尔撒斯 946 2022-07-27

通过tdengine的官网了解到,tdengine的各种好处,准备调研一下,特别是看到开源版支持集群部署,这刚好就是influxdb最痛的痛点,于是决定拉个docker镜像下来试试。
从服务来说倒是还没啥问题,很容易就启动了,关于tdengine本体的尝试,后面空了专门开一篇讲讲。这里先说dbeaver用jdbc驱动来连接tdengine的问题。由于看到官方资料写得很详尽,本以为会一番风顺, 结果没想到被现实啪啪啪打脸了。。。参考的是这一篇官方博客,

https://www.taosdata.com/chinese/12880.html

光看时间还挺新鲜,应该比较稳,于是照着操作一番,然而,上来就是

java.lang.NoClassDefFoundError: Could not initialize class org.apache.http.conn.ssl.SSLConnectionSocket

找了一大圈又说httpclient包不对的,有这有那的,我也拿官方发布的windows客户端安装了一遍,也是莫名其妙连不上,又用里面带的jdbc驱动放到DBeaver里面尝试,依然不行。后来注意到一开始还有一个logging的类的报错,但是只在开始的时候有,后面全是httpclient找不到类的报错。于是下来tdengine的jdbc-connector(https://github.com/taosdata/taos-connector-jdbc), 看了一下,发现common-logging的包被作为test的包排除了

 <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
            <scope>test</scope>
</dependency>

赶紧注释掉 <scope>test</scope> 重新编译一遍,再试试,果然重启dbeaver后就没有报找不到类了。顺便提一下,这里面还有个坑,最好别直接用master的代码编译,得用打了tag的代码版本编译,比如"2.0.40"这个tag,否则连接当前默认版本的tdengine(2.6) 无法正常查看数据。

由于我的服务器限制了22端口访问,所以需要用ssh登录服务器再连接,用默认参数配置了dbeaver的ssh,但是死活连不上去,服务器本身的连接是没问题的,测试通道是通的。于是看看高级选项,默认用的JSch,于是改成用sshJ:
C(5)N4}I30P38N6QVB{0GUY
这样配置以后,终于通了。。。