gpt4 book ai didi

mysql - knexjs promise 释放池连接

转载 作者:行者123 更新时间:2023-11-29 02:46:22 29 4
gpt4 key购买 nike

我目前使用 knexjs.org , promise 而不是常规回调并使用池连接进行 SQL 查询。第一次,它运行顺利。但是现在我通常会遇到池连接错误。代码是这样的

knex('user_detail')
.select('id','full_name','phone','email')
.where('id', id_user)
.then((result) => {
resolve(result);
})
.catch((error) => {
reject(error);
})

但现在我通常会在其中得到错误连接超时和错误池连接。出现错误的第一件事可能是因为我没有释放连接,但我有这样的代码,

knex('user_detail')
.select('id','full_name','phone','email')
.where('id', id_user)
.then((result) => {
resolve(result);
})
.catch((error) => {
reject(error);
})
.finally(() => {
knex.destroy()
})

它在第一次尝试时有效,但在第二次尝试时失败并出现错误 There is no pool defined on the current client 有时错误 The pool probably is full

有人可以向我解释发生了什么以及我如何解决它吗?谢谢。

最佳答案

没有足够的信息来说明您首先用完池连接的原因。

您调用某些 resolve()reject() 函数的方式给人一种预感,您正在低效或完全错误地使用 promises...

如果您添加完整的代码示例,您将如何获得 the pool is probably is full 错误我可以编辑答案并提供更多帮助。例如,通过意外创建多个 Unresolved 事务,池将填满。

在第二个代码示例中,您正在调用 knex.destroy(),它不会破坏单个池连接,但会完全破坏 knex 实例和您所在的池使用。

因此,在 knex.destroy() 之后,您将无法再使用该 knex 实例,您必须通过再次提供数据库连接配置来创建全新的实例.

关于mysql - knexjs promise 释放池连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41588502/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com