exports.handler = async (event) => {
const sql = require('mssql');
let config = {
user: "MyUsername",
password: "MyPassword",
server: "MyServer",
port: 1433,
options: {
database: 'MyDatabase',
encrypt: false,
}
};
sql.connect(config, (err) => {
if (err) { console.log(err);}
else {
console.log('connected');
let request = new sql.Request();
const theQuery = "SELECT * FROM MyTable";
request.query(theQuery, (err, data)=> {
if(err) { console.log(err); }
else { console.log(data); }
})
}
});
};我试图用它执行一个简单的SELECT查询,当我在本地运行它时,它似乎运行得很好,但是当我在Lambda上尝试它时,它就超时了。我在与Server相同的VPC上有lambda,所以它不是连接问题。有什么想法吗?
2022-07-17T03:10:02.912Z a4775342-517a-4511-920e-46269ee07627 INFO ConnectionError: Failed to connect to ********:1433 in 15000ms
at /opt/nodejs/node_modules/mssql/lib/tedious/connection-pool.js:70:17
at Connection.onConnect (/opt/nodejs/node_modules/tedious/lib/connection.js:1051:9)
at Object.onceWrapper (node:events:642:26)
at Connection.emit (node:events:527:28)
at Connection.emit (node:domain:475:12)
at Connection.emit (/opt/nodejs/node_modules/tedious/lib/connection.js:1079:18)
at Connection.connectTimeout (/opt/nodejs/node_modules/tedious/lib/connection.js:1284:10)
at Timeout._onTimeout (/opt/nodejs/node_modules/tedious/lib/connection.js:1229:12)
at listOnTimeout (node:internal/timers:559:17)
at processTimers (node:internal/timers:502:7) {
code: 'ETIMEOUT',
originalError: ConnectionError: Failed to connect to ********:1433 in 15000ms
at Connection.connectTimeout (/opt/nodejs/node_modules/tedious/lib/connection.js:1284:26)
at Timeout._onTimeout (/opt/nodejs/node_modules/tedious/lib/connection.js:1229:12)
at listOnTimeout (node:internal/timers:559:17)
at processTimers (node:internal/timers:502:7) {
code: 'ETIMEOUT',
isTransient: undefined
}
}发布于 2022-07-18 16:00:56
事实证明,脚本只是在完成之前就结束了。要解决这个问题,我不得不兑现诺言
exports.handler = async (event) => {
const promise = new Promise(function(resolve, reject) {
let sql = require('mssql');
sql.connect(config, (err) => {
if (err) {
reject(err);
}
else {
const request = new sql.Request();
const query = "SELECT * FROM MyTable";
request.query(query, (err, result) => {
if(err) {
reject(err);
}
else {
resolve(result);
}
});
}
});
});
return promise;
};https://stackoverflow.com/questions/73009045
复制相似问题