【发布时间】:2020-03-08 16:36:58
【问题描述】:
我正在创建一些测试 AWS Lambda 函数,并且正在使用 npm mysql 包连接到 RDS 数据库。我有以下代码,它确实有效。但是,对函数的每一次其他命中都会导致错误。
代码:
exports.handler = (event, context, callback) => {
connection.query("SELECT * FROM `cubes`", function (error, results, fields) {
if (error) {
connection.destroy();
throw error;
} else {
// connected!
console.log(results);
callback(null, results);
connection.end(function (err) { callback(err, results);});
}
return context.logStreamName
});
};
错误:
{"errorType":"Error","errorMessage":"Cannot enqueue Query after invoking quit.","trace":> ["Error: Cannot enqueue Query after invoking quit."," at Protocol._validateEnqueue ( /var/task/node_modules/mysql/lib/protocol/Protocol.js:215:16)"," 在 Protocol._enqueue (/var/task/node_modules/mysql/lib/protocol/Protocol.js:138:13) "," 在 Connection.query (/var/task/node_modules/mysql/lib/Connection.js:201:25)"," 在 Runtime.exports.handler (/var/task/index.js:10:16) "," 在 Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"]}
我一直在寻找解决方案,但没有找到可行的解决方案。我什至尝试注释掉connection.end() 部分,但随后该功能完全超时。根据 https://stackoverflow.com/a/15267082/1015214 之类的帖子,似乎只要在代码中的任何位置使用 connection.end() 就可以了,因为无论如何它总是在最后被触发,但 AWS Lambda 设置可能有所不同? ..
【问题讨论】:
-
@JunedAhsan 如果这个 ^ 真的是重复的,请解释它如何解决我的问题。正如我所说,我尝试取出 connection.end() 并没有帮助
标签: mysql amazon-web-services npm aws-lambda