Lambda执行INSERT INTO写入MySQL成功但持续超时问题求助
问题根因
你代码中存在核心拼写错误,导致Lambda运行时配置未生效:
你写的context.callbackWaitsForEmptyjsonLoop = false是错误的,正确的属性名为*callbackWaitsForEmptyEventLoop*,你误将Event写为了json,该配置完全没有生效。
该属性的作用是控制Lambda Node.js运行时是否等待事件循环清空后再返回回调结果,默认值为true。配置未生效的情况下,即使你已经调用callback返回结果,Lambda还是会持续等待连接池的后台连接回收任务执行完成,而mysql连接池默认会保持连接活跃一段时间,因此事件循环永远不会被清空,最终触发函数超时。
你另一个UPDATE功能的函数可以正常运行,大概率是该函数内的属性名拼写正确,或者UPDATE场景下连接池的事件循环任务刚好能在超时前执行完成。本地运行无报错的原因是本地Node环境没有Lambda的这套运行时管控逻辑,调用callback后进程会直接退出,不会等待事件循环清空。
修复方案
- 修正属性名拼写:
将context.callbackWaitsForEmptyjsonLoop = false改为context.callbackWaitsForEmptyEventLoop = false - 可选优化建议:
- 补充
pool.getConnection的错误捕获逻辑,你当前代码完全未处理拿连接失败的场景 - callback返回完整的response对象而非仅返回
response.body,避免对接API Gateway时出现格式错误 - 生产环境建议使用支持Promise的mysql2库配合async/await写法,错误处理和代码可读性会更高
修改后重新部署测试,即可解决写入成功但超时的问题。
内容的提问来源于stack exchange,提问作者henry434
相关产品推荐
相关产品推荐

