You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku部署报错connect ECONNREFUSED 127.0.0.1:3306求助

解决Heroku部署时connect ECONNREFUSED 127.0.0.1:3306错误

核心问题原因

Heroku线上环境无法访问本地(127.0.0.1)的MySQL服务,你的应用部署后仍在尝试连接本地数据库,这是错误的根本原因。

分步排查与解决

1. 确认Heroku数据库插件配置

  • 先检查是否已在Heroku上添加MySQL类插件(比如ClearDB MySQL),执行Heroku CLI命令:
    heroku addons:list
    
    若没有相关插件,先安装:
    heroku addons:create cleardb:ignite
    

2. 修正数据库连接代码

打开项目中的数据库连接文件(如db.js),确保没有硬编码127.0.0.1或localhost,而是读取Heroku提供的环境变量。以ClearDB为例,Heroku会自动注入CLEARDB_DATABASE_URL,可按以下方式解析使用:

const mysql = require('mysql');
const url = require('url');
let connection;

if (process.env.NODE_ENV === 'production') {
  // 解析Heroku提供的数据库URL
  const dbUrl = url.parse(process.env.CLEARDB_DATABASE_URL);
  connection = mysql.createConnection({
    host: dbUrl.hostname,
    user: dbUrl.auth.split(':')[0],
    password: dbUrl.auth.split(':')[1],
    database: dbUrl.pathname.slice(1)
  });
} else {
  // 本地环境加载.env配置
  require('dotenv').config();
  connection = mysql.createConnection({
    host: process.env.DB_HOST,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME
  });
}

connection.connect(err => {
  if (err) throw err;
  console.log('数据库连接成功!');
});

module.exports = connection;

3. 验证Heroku环境变量

  • 检查Heroku上的环境变量是否正确:
    heroku config
    
    确认CLEARDB_DATABASE_URL存在,或你手动设置的数据库连接参数(如DB_HOST)是Heroku远程数据库地址,而非127.0.0.1。

4. 重启Heroku应用

修改配置后必须重启应用,让新配置生效:

heroku restart

5. 查看日志定位细节

若问题仍存在,通过日志获取更多上下文信息:

heroku logs --tail

日志会显示连接失败的具体触发场景,帮助排查参数错误或权限问题。


内容的提问来源于stack exchange,提问作者Kameron Farshchian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 06:21:37