AWS Lambda RDS-已排队握手后无法排队握手

时间:2019-12-19 13:55:30

标签: amazon-web-services aws-lambda amazon-rds

每当我测试以下代码时: 我将在第一个日志上获得成功。 随后的日志都显示错误。

    Array.forEach(element => {
          let al = element.selectedData.airline.filter(
            (v, i, a) => a.indexOf(v) === i
          );
          console.log(al, " in the loop");
        });

这是我运行的代码。

    {
      "errorType": "Error",
      "errorMessage": "Cannot enqueue Handshake after already enqueuing a Handshake.",
      "trace": [
        "Error: Cannot enqueue Handshake after already enqueuing a Handshake.",
        "    at Protocol._validateEnqueue (/var/task/node_modules/mysql/lib/protocol/Protocol.js:221:16)",
        "    at Protocol._enqueue (/var/task/node_modules/mysql/lib/protocol/Protocol.js:138:13)",
        "    at Protocol.handshake (/var/task/node_modules/mysql/lib/protocol/Protocol.js:51:23)",
        "    at Connection.connect (/var/task/node_modules/mysql/lib/Connection.js:119:18)",
        "    at data (/var/task/index.js:13:18)",
        "    at new Promise (<anonymous>)",
        "    at Runtime.exports.handler (/var/task/index.js:12:24)",
        "    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
      ]
    }

1 个答案:

答案 0 :(得分:0)

here所述,您正在将连接对象存储在执行上下文之外:

  

在函数的处理程序方法外部声明的对象保留   已初始化...

这意味着在随后的Lambda函数调用中,如果尚未由于不活动而破坏该函数(或由于并发调用而使新函数被旋转),则您将重用已经具有主动连接到您的MySQL服务器。在已经建立的数据库连接上调用connect()似乎是导致您看到的错误。

我建议删除对connection.connect()的显式调用,并允许mysql库隐式建立连接(如果尚不存在),如{的“建立连接” 部分中所述{3}}。