我正在尝试运行以下代码并出现错误
{TimeoutError:Knex:超时获取连接。游泳池是 可能已经满了。您是否错过了.transacting(trx)通话?
是否有必要让sqlite等到池为空?如果没有,您会提出什么建议?
const path = require('path');
const knex = require('knex')({
client: 'sqlite3',
useNullAsDefault: true,
connection: {
filename: path.join(__dirname, '/db/sqlite.db')
}
});
knex('lorem')
.insert({ rowid: 'Slaughterhouse Five' })
var z = 0;
while (z < 20000) {
knex('lorem')
.select('rowid')
.then(result => {
console.log('res', result);
})
.catch(error => console.log('Error in select', error));
z++;
}
答案 0 :(得分:0)
我建议不要尝试运行20000个并行查询。您想在什么时候等待池为空?您可以一个一个地运行所有查询,也可以使用例如Bluebird的.map()
,它允许传递并发参数以限制同时解析多少个查询。