![](/img/trans.png)
[英]NodeJS mysql connection.query callback not logging results to console?
[英]AWS Lambda/Nodejs is not executing mysql connection.query
我有一個簡單的 Lambda 函數來連接到 MYSQL,但是connection.query
沒有執行。 Lambda 具有AWSLambdaVPCAccessExecutionRole
訪問權限,並且它是部署 RDS 的同一 VPC 的一部分。
RDS 安全組已添加到 Lambda 的配置中。 log1 是我總是得到的輸出。 有一次我得到了Log2。 我不確定發生了什么。
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'xxxxxxxx.us-east-1.rds.amazonaws.com',
user : 'admin',
password : 'pass',
database : 'dbname'
});
console.log('CONNECTION ' + connection);
connection.connect();
console.log('2 ');
exports.handler = async (event,context,callback) => {
console.log('3 ');
context.callbackWaitsForEmptyEventLoop = false;
connection.query('SELECT emp_num from tag where emp_id=1', function (error, results, fields) {
console.log('2 ');
if (error) throw error;
else
callback(null, results)
//console.log('The solution is: ', results[0].tag_num);
});
connection.end();
};
日志1
RESTART RequestId:04c2d758-ac40-474f-ac55-045ccea8a9ff 版本:$LATEST 2020-11-08T02:02:58.976Z 04c2d758-ac40-474f-ac55-045ccea8a9ff 信息 3 END RequestId:04c2d758-ac40-cceaa-4874fPORT RequestId:04c2d758-ac40-474f-ac55-045ccea8a9ff 持續時間:5.75 毫秒計費持續時間:100 毫秒內存大小:128 MB 使用的最大內存:20 MB
日志2
START RequestId: abeb6a6d-7480-4acc-91e2-5971e6fe74fe 版本: $LATEST 2020-11-08T02:02:43.293Z abeb6a6d-7480-4acc-91e2-5971e6fe74fe INFO 3 2020-11-08Z02:02:43.293Z abeb6a6d-7480-4acc-91e2-5971e6fe74fe 信息 3 2020-11-08Z02:02:43.284a a4be769。 -4acc-91e2-5971e6fe74fe INFO 2 2020-11-08T02:02:43.294Z abeb6a6d-7480-4acc-91e2-5971e6fe74fe ERROR Uncaught Exception {"errorType":"Error","errorMessage":"Cannot enqueue Query after invoking quit .","code":"PROTOCOL_ENQUEUE_AFTER_QUIT","fatal":false,"stack":["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:198:25)"," 在 Runtime.exports.handler (/var/task/index.js:18:16)","在 Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"]} [錯誤] [1604800963301] LAMBDA_RUNTIME 未能發布處理程序成功響應。Http 響應代碼:403。END RequestId:abeb6a6d-7480-4acc- 91e2-5971e6fe74fe 報告請求 ID:abeb6a6d-7480-4acc-91e2-5971e6fe74fe 持續時間:29.47 毫秒計費持續時間:100 毫秒內存大小:128 MB 使用的最大內存:20 MB
RequestId:abeb6a6d-7480-4acc-91e2-5971e6fe74fe 錯誤:運行時退出錯誤:退出狀態 129 Runtime.ExitError
您的句柄被定義為async
並且您沒有await
承諾。 可能的解決方案:
await connection.query(...).promise()
)exports.handler = (event,context,callback) => {...}
),然后它將等待回調。context.callbackWaitsForEmptyEventLoop = true;
,它告訴 AWS 等待一個空的事件循環。披露:我在 Lumigo 工作,這是一家幫助您調試無服務器應用程序的公司。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.