【问题标题】:Error: connect ECONNREFUSED 127.0.0.1:3306 on MySQL, Heroku, and Node.js错误:在 MySQL、Heroku 和 Node.js 上连接 ECONNREFUSED 127.0.0.1:3306
【发布时间】:2021-02-27 12:19:00
【问题描述】:

我正在使用 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连接的代码。谁能解决这个问题?

【问题讨论】:

    标签: mysql node.js heroku


    【解决方案1】:

    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) 数据库。对于大于他们收费的数据库。

    【讨论】:

    • 我看到它需要借记卡,需要付款吗?
    • 我对插件供应商的商业行为一无所知,抱歉。
    猜你喜欢
    • 2022-11-04
    • 1970-01-01
    • 2017-08-11
    • 2018-04-07
    • 2020-04-30
    • 2021-01-19
    • 2019-12-22
    • 1970-01-01
    • 2019-05-28
    相关资源
    最近更新 更多