如何使用JDBC和SSL连接到Db2并避免错误;检测到DRDA数据流语法错误。原因:0x3。ERRORCODE=-4499";?

如何使用JDBC和SSL连接到Db2并避免错误;检测到DRDA数据流语法错误。原因:0x3。ERRORCODE=-4499";?,db2,db2-luw,Db2,Db2 Luw,我正在尝试连接到Db2,但收到以下错误消息 [jcc][t4][2034][11148][4.25.23] Execution failed due to a distribution protocol error that caused deallocation of the conversation. A DRDA Data Stream Syntax Error was detected. Reason: 0x3. ERRORCODE=-4499, SQLSTATE=58009 这意味

我正在尝试连接到Db2,但收到以下错误消息

[jcc][t4][2034][11148][4.25.23] Execution failed due to a distribution protocol error that caused deallocation of the conversation.
A DRDA Data Stream Syntax Error was detected.  Reason: 0x3. ERRORCODE=-4499, SQLSTATE=58009

这意味着什么,以及如何连接?

简单的回答是,您可能只需要添加
sslConnection=true
JDBC参数

也就是说,您的JDBC URL需要如下所示

db2://db2whoc-abcdefg.services.eu-de.bluemix.net:50001/BLUDB:sslConnection=true;
根据您使用的工具的不同,您可以直接编辑URL,或者将其添加为额外的JDBC属性

现在,只有在使用较新的JDBC驱动程序的情况下,上述方法才有效。 例如,Db2 on Cloud、Db2 Warehouse和Db2 Warehouse on Cloud使用的
DigiCertGlobalRootCA.crt
没有捆绑在旧的驱动程序中。您可以对照此处列出的驱动程序交叉引用驱动程序版本(例如问题中的
4.25.23
)。如果不是最新版本,请升级

如果Db2服务器使用不同的证书(例如自签名证书),则需要下载证书,并将JDBC属性
sslCertLocation
设置为指向其位置,或者可以将证书导入本地存储,并使用
sslTrustStoreLocation
sslTrustStorePassword
将证书导入其本地证书存储

所有这些JDBC属性都在
page

简而言之,您可能只需要添加
sslConnection=true
JDBC参数

也就是说,您的JDBC URL需要如下所示

db2://db2whoc-abcdefg.services.eu-de.bluemix.net:50001/BLUDB:sslConnection=true;
根据您使用的工具的不同,您可以直接编辑URL,或者将其添加为额外的JDBC属性

现在,只有在使用较新的JDBC驱动程序的情况下,上述方法才有效。 例如,Db2 on Cloud、Db2 Warehouse和Db2 Warehouse on Cloud使用的
DigiCertGlobalRootCA.crt
没有捆绑在旧的驱动程序中。您可以对照此处列出的驱动程序交叉引用驱动程序版本(例如问题中的
4.25.23
)。如果不是最新版本,请升级

如果Db2服务器使用不同的证书(例如自签名证书),则需要下载证书,并将JDBC属性
sslCertLocation
设置为指向其位置,或者可以将证书导入本地存储,并使用
sslTrustStoreLocation
sslTrustStorePassword
将证书导入其本地证书存储

所有这些JDBC属性都在
page

不幸的是,在撰写本文时,该页仅表明错误0x3“可能是由防火墙引起的”,但根据我的经验,这不是我发现的。您是否为IBM工作,您不能更改它吗?我提出了建议:-)不幸的是,在撰写本文时,该页仅表明错误0x3“可能是由防火墙引起的”,但这不是我从经验中发现的。你是否为IBM工作,你不能改变它吗?我提出了这个建议:-)