尝试 运行 种子时出错:Knex:获取连接超时。游泳池可能已满
Error trying to run seeds: Knex: Timeout acquiring a connection. The pool is probably full
我每次都收到这个错误 运行 yarn knex seed:run
:
Error while executing "/home/user/path-to-the-file/my-seed.js" seed: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?
问题是我把项目发给其他人,他们可以正常运行,我已经尝试了互联网上所有关于它的答案,我不知道该怎么办了。
我的数据库配置:
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
有人可以帮助我吗?
创建此错误的一种简单方法是这样做:
const rows = [];
for (let i = 0; i < 10000; i++) {
rows.push({ name : `foo ${i}` });
}
await Promise.all(rows.map(data => knex('user').insert(data)));
有无数种方法可以运行断开连接,但最常见的情况是打开太多并发事务或运行处理大量并行查询。
找出错误发生原因的最佳方法是删除部分有问题的代码,直到错误不再发生,然后调查减少的测试用例失败的原因。
查看 knex 内部正在做什么的一个好方法是在 运行 代码之前设置 DEBUG=knex:*
环境变量,以便 knex 在代码执行时输出有关查询、事务和池连接的信息.
遇到类似的问题,将 pg 升级到 8.7.1 并且有效
节点也指向 16.3.1,节点指向 0.95.11
我每次都收到这个错误 运行 yarn knex seed:run
:
Error while executing "/home/user/path-to-the-file/my-seed.js" seed: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?
问题是我把项目发给其他人,他们可以正常运行,我已经尝试了互联网上所有关于它的答案,我不知道该怎么办了。
我的数据库配置:
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
有人可以帮助我吗?
创建此错误的一种简单方法是这样做:
const rows = [];
for (let i = 0; i < 10000; i++) {
rows.push({ name : `foo ${i}` });
}
await Promise.all(rows.map(data => knex('user').insert(data)));
有无数种方法可以运行断开连接,但最常见的情况是打开太多并发事务或运行处理大量并行查询。
找出错误发生原因的最佳方法是删除部分有问题的代码,直到错误不再发生,然后调查减少的测试用例失败的原因。
查看 knex 内部正在做什么的一个好方法是在 运行 代码之前设置 DEBUG=knex:*
环境变量,以便 knex 在代码执行时输出有关查询、事务和池连接的信息.
遇到类似的问题,将 pg 升级到 8.7.1 并且有效
节点也指向 16.3.1,节点指向 0.95.11