SQlite3 и knexjs приводят к тому, что Timeout получает соединение - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь запустить следующий код и получаю сообщение об ошибке

{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 голосов
/ 11 декабря 2018

Я бы предложил не пытаться запустить 20000 параллельных запросов.В какой момент вы хотели бы дождаться, когда бассейн опустеет?Вы можете запускать все запросы по одному или использовать, например, Bluebird .map(), который позволяет передавать параметр параллелизма, чтобы ограничить количество запросов, разрешаемых одновременно.

...