【问题标题】:How to connect mysql in lambda nodejs如何在 lambda nodejs 中连接 mysql
【发布时间】:2021-05-21 00:00:43
【问题描述】:

如何在lambda nodejs中连接mysql

var connection = mysql.createConnection({
            host: 'localhost',
            user: 'root',
            password: '1304',
            database: 'DemoDB'
        })

        connection.connect(function (err) {
            if (!err) {
                console.log("Database connected ... ");
            }
            else {
                console.log("Error connecting database : " + err.message);
            }
        });

        const sql = "CREATE TABLE MESSAGE (message VARCHAR(255))";
        connection.query(sql, function (err, result) {
            if (err) throw err;
            console.log("Table created");
        });

【问题讨论】:

  • 您当前的连接有什么问题?
  • 错误连接 ECONNREFUSED 127.0.0.1:3307
  • 你的mysql在3307端口上吗?我以为默认端口是3306。如果您使用不同的端口,则必须在连接中指定它,例如 port : '3307' 等。如果没有,它将尝试连接到默认端口。也许您不妨将port: 3306 放入连接中以确保安全。
  • var connection = mysql.createConnection({ host: 'localhost', port: 3306, user: 'root', password: '1304', database: 'DemoDB', socket: '/var/lib/mysql/mysql.sock' })
  • 但这不起作用

标签: mysql node.js aws-lambda


【解决方案1】:

如果此 MySQL 服务器安装在您的计算机本地,那么您可以尝试以下一些故障排除:

  1. 确保您的 mysql 服务正在运行。
  2. 确保您可以使用主机+端口+用户+密码组合连接到 mysql 数据库 - 使用命令行或 SQLyog 等 sql 工具测试连接到它。
  3. 确保它使用的 mysql 程序和端口未被防火墙阻止 - 如果您有严格的防火墙,那么您可能需要对 mysqldmysqld-nt 和端口 3306 进行防火墙例外处理。

要检查您的 MySQL 在哪个端口上运行,您必须查找 my.inimy.cnf 文件(通常位于 MySQL 文件夹或 MySQL/Data 文件夹中)。在该文件中,您需要找到port=XXXX,其中有两个。确保port= 的两个值相同。

这里的想法是在通过node.js 连接之前首先确保您的 MySQL 服务器已启动并运行,因为从您收到的错误消息来看,node.js 似乎不是问题。

【讨论】:

    【解决方案2】:

    AWS Lambda 函数在云(某个远程服务器)上运行,而您将 localhost 提供为 Database host,这意味着您的 MySQL server 正在您的 PC 上运行,这就是连接未建立的原因.您必须提供 PC 的 IP 而不是 localhost 才能正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 2016-02-08
      • 2021-04-27
      相关资源
      最近更新 更多