使用Druid连接TDengine报java.sql.SQLException错误,直接JDBC正常求排查
connect error的排查方案 确认驱动类配置正确
使用jdbc:TAOS-RS协议时,TDengine对应的RESTful驱动类是com.taosdata.jdbc.rs.RestfulDriver,请确保Druid配置中driverClassName参数明确指定该类,不要误用原生JDBC驱动的com.taosdata.jdbc.TSDBDriver。调整Druid连接池校验参数
Druid默认的validationQuery为SELECT 1,但TDengine要求查询必须指定表,需修改为SELECT 1 FROM test LIMIT 1(替换test为实际存在的表名),或者直接禁用校验:validationQuery=null。不兼容的校验语句会导致连接初始化失败。核对版本兼容性
部分旧版Druid(如1.2.x之前)对TDengine RESTful驱动支持不完善,建议升级Druid至最新稳定版;同时确保TDengine JDBC驱动版本与服务器版本完全匹配(例如服务器为3.0.x,驱动也需使用3.0.x系列)。检查URL参数的合法性
如果密码包含&、=等特殊字符,直接写入URL会被解析为参数分隔符,导致认证失败。建议通过Druid的username和password独立配置项传入账号密码,而非拼接在URL中;若必须写在URL里,需对特殊字符进行URL编码(如&替换为%26)。验证RESTful服务可用性
虽然直接JDBC连接正常,但需确认TDengine的RESTful服务(由taosadapter提供)是否正常运行。可通过以下命令测试:curl http://127.0.0.1:6041/rest/sql/test -u xxx:xxxx -d "SELECT count(*) FROM test"若返回JSON格式的查询结果,说明服务正常;否则需检查
taosadapter进程是否启动,或端口是否被防火墙拦截。
内容的提问来源于stack exchange,提问作者superman

