ошибка [Драйвер ODBC Microsoft Access] Открытие большего числа таблиц невозможно
Пытаюсь записать 1700 строк в таблицу Access. Для подключения к базе использую модуль nodejs "ODBC".
запросы INSERT создаю в цикле. в базу вставляется 600-700 строк и далее возникает ошибка.
odbcErrors: [
{
state: 'HY001',
code: -1311,
message: '[Microsoft][Драйвер ODBC Microsoft Access] Открытие большего числа таблиц невозможно.'
}
На форумах VB встречал такую проблему она решалась закрытием какого-то рекордсета. в описании модуля нашел только метод connection.close()/
Пробовал разные варианты: одно соединение, пул соединений, в цикл добавлял connection.close() после каждого запроса, не помогает. Подскажите как решить проблему?
вот фрагмент кода:
pool.connect(function (error, conn) {
modemList.forEach(function (item1, index) {
let reqListRes = reqList.filter(function (item2) {
return item2['ID_модема'] == item1['ID_модема']
});
if (reqListRes.length == 0) {
if (item1['№_Прибора'] == null) item1['№_Прибора'] = '0';
let promise = new Promise(function (resolve, reject) {
if (error) throw (error);
console.log('INSERT INTO заявки (ID_модема, Адрес, ном_прибора, дата_последнего_изменения) VALUES (\'' + item1['ID_модема'] + '\',\'' + item1['Адрес'] + '\',\'' +
item1['№_Прибора'] + '\', Now())')
conn.query('INSERT INTO заявки (ID_модема, Адрес, ном_прибора, дата_последнего_изменения) VALUES (\'' + item1['ID_модема'] + '\',\'' + item1['Адрес'] + '\',\'' +
item1['№_Прибора'] + '\', Now())', function (error, result) {
if (error) throw (error);
resolve(result);
});
});
promiseArr.push(promise);
}
});
Promise.all(promiseArr).then(function () {
console.log('new requests done')
res.end('requests done')
}).catch(function (error) {
console.log('new requests done with errors')
if (error) throw (error);
});
});
если в него добавляю con.close(), то после вставки 600-650 строк выходит ошибка "Диспетчер драйверов ODBC] Ошибка SQLSetConnectAttr для драйвера'"
pool.connect(function (error, conn) {
modemList.forEach(function (item1, index) {
let reqListRes = reqList.filter(function (item2) {
return item2['ID_модема'] == item1['ID_модема']
});
if (reqListRes.length == 0) {
if (item1['№_Прибора'] == null) item1['№_Прибора'] = '0';
let promise = new Promise(function (resolve, reject) {
//console.log('функция цикла')
if (error) throw (error);
console.log('INSERT INTO заявки (ID_модема, Адрес, ном_прибора, дата_последнего_изменения) VALUES (\'' + item1['ID_модема'] + '\',\'' + item1['Адрес'] + '\',\'' +
item1['№_Прибора'] + '\', Now())')
conn.query('INSERT INTO заявки (ID_модема, Адрес, ном_прибора, дата_последнего_изменения) VALUES (\'' + item1['ID_модема'] + '\',\'' + item1['Адрес'] + '\',\'' +
item1['№_Прибора'] + '\', Now())', function (error, result) {
if (error) throw (error);
**conn.close(function (error) {
if (error) throw (error);
});**
resolve(result);
});
});
promiseArr.push(promise);
}
});
Promise.all(promiseArr).then(function () {
console.log('new requests done')
res.end('requests done')
}).catch(function (error) {
console.log('new requests done with errors')
if (error) throw (error);
});
});