【发布时间】:2021-06-02 15:29:46
【问题描述】:
我正在使用 Knex 连接到 Azure 数据库,运行一个返回数据库状态的查询(复制/在线)。 如果我运行一次,一切都很好。 但是,如果我使用 setInterval 重新运行它(我想知道状态何时从 COPYING 更改为 ONLINE),我会在第二次和第三次以及调用函数时遇到连接错误。
这是我的代码
const knex = require('knex')({
client: 'mssql',
connection: {
host: '***',
user: '***',
password: '***',
options: { requestTimeout: 350000, encrypt: true },
},
pool: {
min: 0,
max: 15,
},
});
async function copyStatus() {
try {
console.log('Running query');
const status = await knex.raw(
"SELECT name, state_desc FROM sys.databases WHERE name = 'Tide_QA_Dev_runtime' "
);
return status[0].state_desc;
// console.log(status[0].state_desc);
} catch (error) {
console.log(error);
} finally {
console.log('Closing connection with database');
await knex.destroy();
}
}
function intervalFunc() {
copyStatus().then(function (result) {
if (result === 'ONLINE') {
console.log('Database copy is done.');
} else if (result === 'Database is still copying') {
console.log('bezig');
}
});
}
setInterval(intervalFunc, 2000);
这是我的输出
Closing connection with database
Database copy is done.
Running query
Error: Unable to acquire a connection
at Client_MSSQL.acquireConnection (/Users/davidbouckaert/Documents/Qite/TIDE_repo/node_modules/knex/lib/client.js:286:13)
at Runner.ensureConnection (/Users/davidbouckaert/Documents/Qite/TIDE_repo/node_modules/knex/lib/execution/runner.js:259:46)
at Runner.run (/Users/davidbouckaert/Documents/Qite/TIDE_repo/node_modules/knex/lib/execution/runner.js:30:30)
at Raw.Target.then (/Users/davidbouckaert/Documents/Qite/TIDE_repo/node_modules/knex/lib/builder-interface-augmenter.js:24:43)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
Closing connection with database
Running query
Error: Unable to acquire a connection
at Client_MSSQL.acquireConnection (/Users/davidbouckaert/Documents/Qite/TIDE_repo/node_modules/knex/lib/client.js:286:13)
at Runner.ensureConnection (/Users/davidbouckaert/Documents/Qite/TIDE_repo/node_modules/knex/lib/execution/runner.js:259:46)
at Runner.run (/Users/davidbouckaert/Documents/Qite/TIDE_repo/node_modules/knex/lib/execution/runner.js:30:30)
at Raw.Target.then (/Users/davidbouckaert/Documents/Qite/TIDE_repo/node_modules/knex/lib/builder-interface-augmenter.js:24:43)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
Closing connection with database```
It looks like the connection is made (see console log: Running query).
Any idea what's going on?
【问题讨论】:
标签: javascript node.js sql-server azure-sql-database knex.js