【问题标题】:How to verify the connection was released如何验证连接是否已释放
【发布时间】:2017-02-14 18:15:34
【问题描述】:

我使用 JDBC 驱动程序连接到我的数据库(由 Centura Gupta 公司使用名为 SQLBase 的 DBMS 制作)。

它执行没有问题(即使我检查了数据是否已插入我的数据库)。

然后我执行了一个非常简单的 SELECT 语句,我得到了这个错误:

TypeError: Cannot read property 'createStatement' of undefined
    at /var/apis/api.test/connections/sqlbase.dposs1.js:86:25
    at JDBC.Pool.reserve (/var/apis/api.test/node_modules/jdbc/lib/pool.js:192:5)
    at Object.getCenturaQuery (/var/apis/api.test/connections/sqlbase.dposs1.js:79:15)
    at Object.verificarPagos (/var/apis/api.test/app/bancos/bancos.model.js:146:20)
    at getFacturas (/var/apis/api.test/app/bancos/bancos.rutas.js:7:18)
    at Layer.handle [as handle_request] (/var/apis/api.test/node_modules/express/lib/router/layer.js:95:5)
    at next (/var/apis/api.test/node_modules/express/lib/router/route.js:131:13)
    at Route.dispatch (/var/apis/api.test/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/var/apis/api.test/node_modules/express/lib/router/layer.js:95:5)
    at /var/apis/api.test/node_modules/express/lib/router/index.js:277:22

我认为发布声明没有正确执行。

我使用我在这里看到的这段代码:https://www.npmjs.com/package/jdbc

myConnection.release(connObj, function(err) {
    if (err) {
        console.log(err.message);
    }
});

发布后我还有这个 JSON 连接对象(我认为它应该不存在了,但它仍然存在):

{
    "uuid": "30271a1a-db99-4ff2-8b6a-5befcbe8fbb4",
    "conn": {
        "_conn": {
            "warnings": null
        },
        "_txniso": [
            "TRANSACTION_NONE",
            "TRANSACTION_READ_UNCOMMITTED",
            "TRANSACTION_READ_COMMITTED",
            null,
            "TRANSACTION_REPEATABLE_READ",
            null,
            null,
            null,
            "TRANSACTION_SERIALIZABLE"
        ]
    },
    "keepalive": false
}

如何在执行 SELECT 语句之前检查连接是否成功释放?

我认为问题在于这个 JSON 连接对象。

也许有帮助:我正在服务器端使用 JavaScript 和 NodeJS 进行开发。

【问题讨论】:

    标签: javascript jdbc database-connection sqlbase centura


    【解决方案1】:

    我不是 JavaScript 人员,但我是 Gupta SQLBase 人员,逻辑告诉我,如果您释放了句柄(连接),则无法运行“选择”。 通常,在 Gupta 自己的工具集中,您将按以下顺序执行: 1) 连接手柄 2)(可选)将隔离级别设置为 'Release Locks' 或 'Read Committed 1、2 或 3' 。 3) 使用相同的句柄运行更新 4) 使用相同的句柄运行提交 5) 使用相同的句柄运行 Select 6)(可选)释放手柄(或重复使用)

    请原谅我误解了 JavaScript 的工作方式 - 只能就 Gupta 的工作方式提出建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 2016-04-05
      • 2010-12-20
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      • 1970-01-01
      相关资源
      最近更新 更多