首页 > 解决方案 > 错误:在 MySQL、Heroku 和 Node.js 上连接 ECONNREFUSED 127.0.0.1:3306

问题描述

我正在用 mysql 和 node.js 测试简单的代码,但它说: Error: connect ECONNREFUSED 127.0.0.1:3306

这是我的代码:

require('dotenv').config();
const mysql = require('mysql2/promise');


module.exports = mysql.createConnection({
    user: process.env.DB_USER,
    password: process.env.DB_PASS,
    database: process.env.DB_NAME
});

我刚开始做一些mysql连接的代码。任何人都可以解决这个问题吗?

标签: mysqlnode.jsheroku

解决方案


Heroku 的工作方式是,您的网络测功机(虚拟机)不能内置 MySQL 实例。也就是说,当您使用 web dyno 时,您将无法连接到 localhost 上的 MySQL。

Heroku 提供了他们自己的 postgreSQL 服务,您可以使用(当然,您必须将 Web 应用程序代码从 MySQL 更改为 postgreSQL)。或者,您可以在 Heroku 应用程序中安装一些不同的第三方 MySQL 插件产品。 https://elements.heroku.com/addons/

这些产品中的每一个都需要您使用从 Web dyno 获得的环境变量连接到它。所以如果你做这样的事情,而不是调试,你将能够在本地和你的测功机上运行。

const dburl = process.env.MYSQL_ADDON 
    ||   'mysql://' + process.env.DB_USER+ ':' + process.env.DB_PASS 
        + '@localhost/' + process.env.DB_NAME

const conn = mysql.createConnection(dburl);

您使用的附加组件具有解释其环境变量名称和详细信息的文档。

可用的第三方加载项具有免费层,允许您处理非常小的 (5MiB) 数据库。对于比他们收费的更大的数据库。


推荐阅读