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

Pau*_*non 1 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
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我如何进行连接?

Pau*_*non 8

简单来说,您可能只需要添加 sslConnection=trueJDBC 参数

即您的 JDBC URL 需要看起来像这样

db2://db2whoc-abcdefg.services.eu-de.bluemix.net:50001/BLUDB:sslConnection=true;
Run Code Online (Sandbox Code Playgroud)

根据您使用的工具,您可以直接编辑 URL,或添加为额外的 JDBC 属性

现在,只有当您使用相当新的 JDBC 驱动程序时,上述方法才有效。例如,Db2 on Cloud、Db2 Warehouse 和 Db2 Warehouse on Cloud 使用的版本DigiCertGlobalRootCA.crt未捆绑在旧版驱动程序中。4.25.23您可以将驱动程序版本(例如在问题中)与此处列出的驱动程序交叉引用。DB2 JDBC 驱动程序版本和下载以及升级(如果不是最新版本)

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

所有这些 JDBC 属性均在所有支持的数据库产品的 Common IBM Data Server Driver for JDBC and SQLJ 属性页面上进行了描述