从 node-mysql 连接到 Amazon RDS (MySQL) 时出错

2024-01-13

我正在尝试使用“felixge/node-mysql”包从 Lambda 中托管的 Nodejs 代码连接到我的 Amazon RDS (MySQL) 实例。我需要帮助来找出我做错了什么。我收到“连接 ETIMEDOUT”错误。我的代码托管在 Lambda 中,Lamda 和 RDS 属于同一帐户和区域。我还将 RDSFullAccess 策略附加到 IAM 角色。 RDS实例也可以从所有IP访问(无白名单/黑名单IP)。

同时,我可以使用相同的凭据从本地 MySQL Workbench 进行连接。

这是我的代码:

var connection = mysql.createConnection({
        host     : 'xxxxxxxx.crhmtrscnbgt.us-east-1.rds.amazonaws.com',
        user     : 'my_user',
        password : 'my_passowrd',
        database : 'my_db',
        port     : '3306',
        debug    : true
});  

connection.connect(function(err) {
        if (err) {
                console.error('error connecting: ' + err.stack);
                return;
        }
        console.log('connected as id ' + connection.threadId);
});

var query = "SELECT * FROM users";            

connection.query(query, function(err, rows) {                
        if (err) throw err;                
        console.log(rows);
});

输出是:

2016-04-12T13:32:34.367Z    fa04401a-00b2-11e6-9a23-2dd70e33cc5d    error connecting: Error: connect ETIMEDOUT 
at Connection._handleConnectTimeout (/var/task/node_modules/mysql/lib/Connection.js:412:13) 
at Socket.g (events.js:180:16) 
at Socket.emit (events.js:92:17) 
at Socket._onTimeout (net.js:327:8) 
at _makeTimerTimeout (timers.js:438:11) 
at Timer.unrefTimeout [as ontimeout] (timers.js:502:5) 
-------------------- 
at Protocol._enqueue (/var/task/node_modules/mysql/lib/protocol/Protocol.js:141:48) 
at Protocol.handshake (/var/task/node_modules/mysql/lib/protocol/Protocol.js:52:41) 
at Connection.connect (/var/task/node_modules/mysql/lib/Connection.js:123:18) 
at Object.Workout.save (/var/task/storage.js:32:24) 
at Object.storage.saveWorkout (/var/task/storage.js:62:28) 
at intentHandlers.NewExcerciseIntent (/var/task/intentHandlers.js:19:17) 
at AlexaSkill.eventHandlers.onIntent (/var/task/AlexaSkill.js:65:27) 
at AlexaSkill.requestHandlers.IntentRequest (/var/task/AlexaSkill.js:28:37) 
at AlexaSkill.execute (/var/task/AlexaSkill.js:105:24) 
at exports.handler (/var/task/index.js:9:19)

我修好了它。问题在于 Lambda 函数配置中的超时设置。它被设置为 3 秒,但我的脚本需要 10 秒以上才能执行。这就是我收到 ETIMEDOUT 错误的原因。我将设置更改为 30 秒。现在没有问题了,一切正常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 node-mysql 连接到 Amazon RDS (MySQL) 时出错 的相关文章

  • MySQL,连接两列

    MySQL 表中有两列 SUBJECT and YEAR 我想生成一个字母数字唯一编号 其中包含主题和年份的串联数据 我怎样才能做到这一点 是否可以使用像这样的简单运算符 您可以使用CONCAT http dev mysql com doc
  • MongooseError:操作 `orders.deleteMany()` 缓冲在 10000 毫秒后超时

    当我运行我的应用程序时npm run seeder然后我面临这个错误 我仔细检查了我的数据库连接 没问题 另外 我检查了我的 ordermodels 文件也没有问题 我用过MongoDB的compass没有任何问题 我不知道为什么显示buf
  • Magento - 无法重新索引产品价格 - 外键约束失败

    我最近刚刚将我的 magento 商店从 1 4 2 升级到 1 7 0 2 升级进行得很顺利 但是当我尝试在升级后重新索引数据时 产品价格失败了 我尝试过使用php shell indexer php reindexall来自 SSH 它
  • 使用 Laravel 和 Eloquent 从表中选择全部

    我正在使用 Laravel 4 设置我的第一个模型 以从名为的表中提取所有行posts 在标准 MySQL 中我会使用 SELECT FROM posts 如何在 Laravel 4 模型中实现这一目标 我的完整模型源代码如下
  • MySQL - 查找接近的匹配项

    MySQL 有没有办法在文本字段中找到紧密匹配的内容 说找到 email protected cdn cgi l email protection当搜索时 email protected cdn cgi l email protection
  • MySQL 薛定谔表:存在,但不存在

    我遇到了最奇怪的错误 有时 在创建或更改表时 我会收到 表已存在 错误 但是 DROP TABLE 返回 1051 未知表 所以我得到了一个无法创建 无法删除的表 当我尝试删除数据库时 mysql 崩溃了 有时它有助于创建另一个具有不同名称
  • 如果 Grunt 任务的子任务之一失败,如何使其失败?

    我在 grunt 中有一个构建任务 如下所示 grunt registerTask build jshint uglify 问题是 即使 jshint 任务失败 uglify 任务也会运行 如果它的子任务之一失败 如何使 build 任务终
  • 通过node.js的npm安装gulp会破坏windows

    我想在我的 Windows 机器上使用 gulp 它实际上工作得很好 除非我尝试使用创建的文件 例如推送到 github 或删除 然后它就崩溃了 因为文件路径太长 这似乎是一个相当常见的问题 https github com joyent
  • socket.io xhr 在连接缓慢时出现错误(3G 移动网络)

    当我在 3G 移动网络 互联网连接速度慢 上测试我的真实聊天应用程序时 Socket io反复断开然后重新连接 我已经记录了原因 它说 xhr post error 这提高了 transport error 然后断开连接 我可以知道什么意思
  • 如何在 Lambda 中将对象上传到 S3?

    似乎无法将对象上传到 Lambda 中的 S3 本地一切正常 日志中没有错误可以显示出了什么问题 代码如下 console log Loading function var AWS require aws sdk var s3 new AW
  • 可注入的“PlatformLocation”需要使用JIT编译器进行编译,但“@angular/compiler”不可用

    我的 Angular 应用程序通过 Node 16 13 0 提供服务 更新到 Angular 13 后 我收到以下错误 可注入 class PlatformLocation 的 JIT 编译失败 文件 Users btaylor work
  • 重命名猫鼬中的字段[重复]

    这个问题在这里已经有答案了 我有两个 JSON 对象 每个对象都有一个名字字段 我想将名字重命名为名称 还想使用猫鼬将现有的名字值导入到名称 Schema const mongoose require mongoose const Sche
  • Monkeyrunner/jython 中未找到 JDBC 驱动程序错误

    我需要在中插入一些东西DB 我在用着JDBC as a connector jython the script mysql数据库和脚本正在运行CentOS 我的代码看起来像这样 from com android monkeyrunner i
  • MySQL 两种日期格式之间的转换

    用户将以这种格式输入日期 2017 年 2 月 17 日 存储在 mysql 数据库中的日期格式如下 2015 02 17 00 00 00 我想做的是 SELECT FROM insurance where DATE FORMAT in
  • 将项目中的node_modules集中到子项目中

    是否可以以在中心点上拥有所需模块的方式配置 grunt 我有以下项目结构 Project subproject subproject subproject 我通过 grunt 构建项目的所有子项目 并且我也可以为自己构建每个子项目 目前 我
  • 批处理文件并与数据库比较

    目前我正在开发一个 Spring Boot 应用程序 该应用程序定期尝试处理包含用户数据的文件 其中每行都包含userId and departamentId隔开 例如123534 13 该文件将包含数百万条记录 我的要求是以这样的方式将此
  • 让 Jest 全局设置和全局拆卸在 TypeScript 项目中工作

    我想运行一个在运行测试之前打开数据库连接的函数 全局设置 以及另一个在运行测试后关闭数据库连接的函数 全局拆卸 目前我有以下配置 包 json jest testEnvironment node globalSetup src jest g
  • 如何清除node.js中的超时

    您好 我们正在使用 node js socket io 和 redis 开发应用程序 我们有这个程序 exports processRequest function request result var self this var time
  • 如何在网络服务器中的端口 80 而不是端口 5000 上运行“部署”。

    我正在使用 deployd 运行一个网站 并且在将在端口 5000 上运行的应用程序更改为端口 80 时遇到问题 我想要做的是不要使用 mydomain com 5000 而只想使用 mydomain com 5000 com 谢谢 根据内
  • 消息:尝试访问 aws gateway api 时出现“内部服务器错误”

    使用 Node js 创建 Lambda Hello world 函数 并为 Get 调用创建 API GateWay 触发器 尝试通过 URL 访问 Lambda 函数 出现以下错误 消息 内部服务器错误 对于 AWS 来说非常陌生 您需

随机推荐