【发布时间】:2021-08-10 17:02:29
【问题描述】:
我每次运行yarn knex seed:run时都会收到此错误:
执行“/home/user/path-to-the-file/my-seed.js”种子时出错:Knex:获取连接超时。游泳池可能已经满了。您是否缺少 .transacting(trx) 调用?
问题是我把项目发给其他人,他们可以正常运行,我已经尝试了互联网上所有关于它的答案,我不知道该怎么办了。
我的数据库配置:
const config = Object.freeze({
client: 'pg',
pool: {
min: 0,
max: 5,
idleTimeoutMillis: 30000,
createTimeoutMillis: 3000,
acquireTimeoutMillis: 30000,
reapIntervalMillis: 1000,
createRetryIntervalMillis: 100,
propagateCreateError: false
},
connection: Object.freeze({
...database
})
})
- Knex 版本:“^0.95.8”
- pg 版本:“^8.7.1”
- 纱线版本:1.22.11
- 节点版本:14.17.4
我已经试过降级pg和node,没用,没用。
Knex 存储库中有一个问题,说升级到最新的pg 解决了它,但它也没有用:https://github.com/knex/knex/issues/2820
有人可以帮我吗?
【问题讨论】:
-
你的种子有虫子。除非您显示破坏代码,否则没有人可以帮助您。尝试将示例代码的大小减少到实际导致失败的部分。
-
可能是什么错误?为什么它只是不向我显示真正的错误,而是抛出这个通用错误。
-
这是一种错误,您从 knex 请求了太多并行连接,并且没有连接给您。 Knex 也不知道你在用这些连接做什么。您可以监控 knex 正在运行的查询/事务类型,例如在运行种子之前设置
DEBUG=knex:*环境变量。
标签: javascript node.js knex.js