我在尝试使用一系列利用 Knex 迁移的 npm 脚本来部署 Node.js 应用程序的数据库更改时遇到 KnexTimeoutError。我的目标是回滚所有迁移,应用最新的迁移,然后为数据库播种,在单个 npm 命令中执行。我运行的具体命令是,
"deploy:fresh": "npm run knex:migrate:rollback:all && npm run knex:migrate:latest && npm run knex:seed:run"
在开发过程中我已经多次运行此命令。
我的堆栈,
我知道一个类似的替代问题(Knex:获取连接超时。池可能已满。您是否缺少 .transacting(trx) 调用?)存在,但它太旧了,建议的版本对我来说太旧了现在。
我们需要查看您的 knex 设置。在连接对象中,有连接池的(可选)设置。
{
..., // the rest of the settings
pool: { min: 1, max: 20 },
}
您可以尝试将最大值提高到默认值 10 之外的值。 但您应该知道,如果脚本中的某些内容耗尽了所有这些连接,则可能有点不健康。这与其说是一种药物,不如说是一种膏药......
顺便说一句,首先确保与数据库的连接正常工作,这样就不是问题了。