Javascript 未关闭MySql节点上的连接会导致超时
我有一个关于AWS lambda的代码,可以查询AWS RDS MySQL数据库 每次需要插入数据库时,它都会运行此类:Javascript 未关闭MySql节点上的连接会导致超时,javascript,mysql,amazon-web-services,asynchronous,lambda,Javascript,Mysql,Amazon Web Services,Asynchronous,Lambda,我有一个关于AWS lambda的代码,可以查询AWS RDS MySQL数据库 每次需要插入数据库时,它都会运行此类: const mysql = require('mysql'); const config = require('../config.js'); const con = mysql.createConnection(config); async function insert_score_db(user,message_id,date_created,sprint){
const mysql = require('mysql');
const config = require('../config.js');
const con = mysql.createConnection(config);
async function insert_score_db(user,message_id,date_created,sprint){
//con.connect(function(err) {
//if (err) throw err;
console.log("Connected!");
var sql = "INSERT INTO user_records (user_name,message_id, date_created,sprint) VALUES ('"+user+"', "+ message_id + ", '"+date_created+"',"+ sprint+");";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
//con.end();
//con.destroy();
//});
}
module.exports={
insert_score_db
};
我没有使用**con.connect(函数(err){**
,因为任何查询
调用都隐式建立了连接
我还注释了**con.end()**
,因为此函数由嵌套的异步循环运行,并导致以下排队Hanshake:
ERROR Uncaught Exception {"errorType":"Error","errorMessage":"Cannot enqueue Handshake after invoking quit.","code":"PROTOCOL_ENQUEUE_AFTER_QUIT","fatal":false,"stack":["Error: Cannot enqueue Handshake after invoking quit."," at Protocol._validateEnqueue
我去掉了**con.end()**
,所有代码都正常运行,但函数的结尾是:任务在210.10秒后超时
。我猜DB连接从未关闭到lambda执行无法完成
使用嵌套异步循环运行DB querys的潜在解决方案是什么?将con.end()
和con.destroy()
放在con.query()
的回调函数中