我正在尝试运行一个nodejs应用程序,它使用节点模块ibm_db并连接到IBM Cloud上的db2 db。当我尝试运行它时,我收到以下错误消息
[2019-02-28T09:20:35.400] [错误] [Ldap配置] - {错误:[IBM] [CLI驱动程序] SQL30081N检测到通信错误。正在使用的通信协议:“SSL”。正在使用的通信API:“SOCKETS”。找到错误的位置:“”。检测到错误的通信功能:“sqlcctcpconnr”。协议特定的错误代码:“202”,“”,“”。 SQLSTATE = 08001
errors:[],error:'[node-odbc] SQL_ERROR',message:'[IBM] [CLI Driver] SQL30081N检测到通信错误。正在使用的通信协议:“SSL”。正在使用的通信API:“SOCKETS”。找到错误的位置:“”。检测到错误的通信功能:“sqlcctcpconnr”。协议特定的错误代码:“202”,“”,“”。 SQLSTATE = 08001 \ r \ n',状态:'08001', sqlcode:-30081} [2019-02-28T09:20:35.400] [WARN] log - [星期四,2019年2月28日12:20:35 GMT [clf]] - false - “GET / auth / sso / callback?scope = openid&code = 7wZVobhvNcVMeF3df3v9JWAI6pwFwf“302 80 1141 ms'
我听说它可能与我可以拥有的DB2驱动程序有关(应用程序与本地驱动程序冲突,实际上它不应该安装)但是我需要它用于其他项目(这是一个我用它的新项目)需要工作)
我有以下DB2版本
DB21085I“DB2”实例使用“64”位,DB2代码版本“SQL09074”,级别标识符为“08050107”。信息信号是“DB2 v9.7.400.501”,“s110330”,“IP23238”和FixPack“4”。该产品安装在“C:\ PROGRA~1 \ IBM \ SQLLIB”中,DB2副本名称为“DB2COPY1”。
老实说,我错过了这个错误。任何帮助都感激不尽。
---------- UPDATE -------------
添加server / config / dev.json
"sso": {
"authorization_url": "/idaas/oidc/endpoint/default/authorize",
"token_url": "/idaas/oidc/endpoint/default/token",
"issuerId": "https://prepiam.toronto.ca.ibm.com",
"callback_url": "/auth/sso/callback",
"clientId": secret
"clientSecret": secret
},
"slack": {
"webhookURL": "https://hooks.slack.com/services/more_secret_stuff?"
},
"db2": {
"dsn": "DATABASE=BLUDB;HOSTNAME=dashdb-entry-yp-dal10-01.services.dal.bluemix.net;PORT=50001;PROTOCOL=TCPIP;UID=id;PWD=pass;Security=SSL;"
}
}
谢谢
dashdb允许您使用(或不使用)SSL(TLS)连接到其数据库。
如果使用基于云的数据库,许多公司都希望加密他们的数据库通信,无论是在飞行中还是在静止时。一些行业要求这样做。
dashdb可能需要最低版本的TLS(SSL),例如v1.2。
我不知道Db2 v9.7.4 Windows客户端是否支持TLSV12,如果不支持,SSL握手是否可以成功为dashdb协商较低版本。如果没有,那么您的选项是升级或不加密。
您最好的选择可能是硬着头皮:安装并使用当前的V11.1.4.4 Db2客户端,您可以从IBM Passport Advantage下载(或进入您的公司)。无论如何,您的公司可能会被迫在某个时候进行Db2客户端升级。也可以在同一台机器上安装多个Db2客户端,并在它们之间进行切换,尽管您需要仔细测试。
您可以从IBM获取dashdb证书,有时可以从Web控制台下载。
如果你希望坚持使用Db2 v9.7.4客户端(看看它是否可以用于dashdb的SSL - 它可能不会!),该版本的说明是here。 IBM在旧版本中并不容易,这是升级的一个原因(因为当前版本不需要单独安装GSK,也不需要您创建/填充密钥库)。