dashdb:连接错误SQLSTATE = 08001

时间:2016-09-16 20:04:45

标签: node.js db2 ibm-cloud dashdb

我正在运行带有dashDB作为后端的Node.js应用程序。我使用ibm_db节点包作为连接到dashDB的驱动程序。 Node.js和dashDB部署在IBM Bluemix中。 我没有使用ibm_db包提供的连接池选项。我们有后台作业(来自node-cron包的cron作业),它经常查询dashDB(比如每2分钟一次)进行CRUD操作。前30分钟,没有问题。 30-45分钟后,当我们尝试建立连接时,我们开始低于错误。

我们从数据库获得结果后立即打开连接并关闭连接。

以下是我们用于打开和关闭连接的代码:

var dashDB = require("ibm_db")
function openConnection(next) {
    try {
        dashDB.open(connectionString, function(err, connection) {
            if (err) return dashDBError('openConnection', err)
            console.log('DB: openConnection.'.blue)
            connectionsCount ++
            next(connection)
        });
    } catch(err) {
        console.error('CAUGHT OPEN CONNECTION ERROR')
        console.log(err)
        next({ error: err })
    }
}

//Close dashDB connection
function closeConnection(connection) {
    connection.close(function(err) {
        if (err) return dashDBError('closeConnection', err)
        connectionsCount --
        console.log('DB: closeConnection.'.blue)
    })
}
//Throw error on exception
function dashDBError(action, err) {
  console.error('DB ERROR', action, err.message)
  console.log('Connections: ', connectionsCount)
  console.trace("Here I am!")
  return { error: err }
}

以下是我们遇到的错误:

**[IBM][CLI Driver] SQL30081N  A communication error has been detected. Communication protocol being used: "TCP/IP".  Communication API being used: "SOCKETS".  
Location where the error was detected: "169.55.227.101".  Communication function detecting the error: "send".  Protocol specific error code(s): "32", "*", "0".  SQLSTATE=08001

[IBM][CLI Driver] SQL30081N  A communication error has been detected. Communication protocol being used: "TCP/IP".  Communication API being used: "SOCKETS".  
Location where the error was detected: "169.55.227.101".  Communication function detecting the error: "selectForConnectTimeout".  Protocol specific error code(s): "115", "*", "*".  SQLSTATE=08001

Assertion failed: (ret != SQL_INVALID_HANDLE), function GetColumnValue, file ../src/odbc.cpp, line 620.
Abort trap: 6**   

1 个答案:

答案 0 :(得分:0)

通常,SQL30081N错误表示客户端和服务器之间的tcp / ip层中存在通信错误。请检查以下内容。

  1. 验证您是否能够从运行node.js应用程序的同一客户端连接到dbdb并从dashdb控制台查询数据。
  2. 查看此技术说明,其中详细说明了db2客户端和服务器连接之间SQL30081n错误的各种原因和解决方法。

    IBM SQL30081N TCIPIP connection error

    如果这没有帮助,请联系db2支持团队进一步调查。

    smurali_IBM