我试图使用JDBC驱动程序建立与Sybase ASE 15.7的SSL连接而没有运气。 我尝试了以下选项:
使用JTDS 1.25驱动程序(jtds-1.2.5.jar)
使用以下连接字符串:jdbc:jtds:sybase://host:port;databaseName=dbname;ssl=request
我得到Network error IOException: Connection refused
使用Jconnect 4(jconn4.jar)
使用以下连接字符串:
JDBC:SYBASE:TDS:主机:端口/ DBNAME ENABLE_SSL =真
我得到了java.sql.SQLException: JZ00L: Login failed. Examine the SQLWarnings chained to this exception for the reason(s)
...
java.sql.SQLException: I/O Error: DB server closed connection.
我检查了Sybase日志,看到以下错误:
kernel SSL or Crypto Error Message: 'The SSL handshake failed. Root error: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol'.
看起来Sybase服务器需要SSL连接,但java客户端仍然没有使用SSL(尽管连接字符串属性标记为ssl = true)。
尝试搜索Sybase文档并没有太大的运气,既没有这个错误也没有使用JConnect的SSL。
我们非常感谢任何答案 - 我对驱动程序和配置的类型非常灵活。
由于
答案 0 :(得分:1)
经过多次调查,我找到了解决方案。实际上是2。
select pattern, count(*)
from (select id, group_concat(code order by code) as pattern
from t
group by id
) p
group by pattern;
jdbc:sybase:Tds:host:port/dbname?ENABLE_SSL=true&SSL_TRUST_ALL_CERTS=true
下的Java默认信任库。可以使用keytool导入证书,如here所述。