Knex:获取连接超时。泳池可能已经满了。您是否错过了 .transacting(trx) 调用? [2024]

问题描述 投票:0回答:1

我在尝试使用一系列利用 Knex 迁移的 npm 脚本来部署 Node.js 应用程序的数据库更改时遇到 KnexTimeoutError。我的目标是回滚所有迁移,应用最新的迁移,然后为数据库播种,在单个 npm 命令中执行。我运行的具体命令是,

"deploy:fresh": "npm run knex:migrate:rollback:all && npm run knex:migrate:latest && npm run knex:seed:run"

在开发过程中我已经多次运行此命令。

我的堆栈,

  • NestJS
  • Objection.js ORM(使用 knex.js)
  • PostgreSQL(在 Supabase 上)

我知道一个类似的替代问题(Knex:获取连接超时。池可能已满。您是否缺少 .transacting(trx) 调用?)存在,但它太旧了,建议的版本对我来说太旧了现在。

  • “knex”:“^3.1.0”
  • “反对”:“^3.1.4”,
  • “pg”:“^8.11.3”,
database postgresql nestjs knex.js supabase
1个回答
0
投票

我们需要查看您的 knex 设置。在连接对象中,有连接池的(可选)设置。

{
  ..., // the rest of the settings
  pool: { min: 1, max: 20 },
}

您可以尝试将最大值提高到默认值 10 之外的值。 但您应该知道,如果脚本中的某些内容耗尽了所有这些连接,则可能有点不健康。这与其说是一种药物,不如说是一种膏药......

顺便说一句,首先确保与数据库的连接正常工作,这样就不是问题了。

© www.soinside.com 2019 - 2024. All rights reserved.