SQlite3和knexjs导致超时获取连接

时间:2018-12-11 10:49:15

标签: sqlite knex.js

我正在尝试运行以下代码并出现错误

  

{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++;
}

1 个答案:

答案 0 :(得分:0)

我建议不要尝试运行20000个并行查询。您想在什么时候等待池为空?您可以一个一个地运行所有查询,也可以使用例如Bluebird的.map(),它允许传递并发参数以限制同时解析多少个查询。