node-mssql使用连接池连接超时时如何取消自动重连
题目描述
连接池连接成功后,执行数据库操作时连接超时,如何配置才能直接返回错误,而不是一直在尝试重新连接
相关代码
const to = require('await-to-js').default;
const sql = require('mssql');
const timeOut = require('../utils/timeOut');
const config = {
user: 'sa',
password: '123',
server: '127.0.0.1',
database: 'test',
port: 1433,
appName: 'node-test',
connectionTimeout: 5000, //连接timeout,单位ms 默认 15000
requestTimeout: 5000,//请求timeout,单位ms默认15000
//parseJSON: true, //将json数据集转化成json obj
options: {
encrypt: false // 是否加密连接,如果在Windows Azure上使用,设置为true
},
pool: {
max: 100,
min: 0,
idleTimeoutMillis: 30000 //设置关闭未使用连接的时间,单位ms默认30000
}
};
(async () => {
let err, pool, result;
for (; ;) {
[err, pool] = await to(new sql.ConnectionPool(config).connect());
if (!err) {
pool.on('error', err => {
console.error(err.message);
});
console.log(`数据库连接成功!`);
console.log(`SQL服务器地址:${config.server}`);
break;
} else if (pool !== undefined) {
pool.close();
}
console.error(err.message);
console.error(`数据库连接失败,5秒后重新连接...`);
await timeOut(config.connectionTimeout);
}
// 此时将SQL Server服务关闭,下面的查询连接超时不会立即返回错误,而是一直在尝试重新连接,如何配置才能直接返回错误
await timeOut(15000);
[err, result] = await to(pool.query`SELECT 1`);
// 需要超时后直接返回错误
console.log(err, result);
})();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论