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

Node.js连接Railway MySQL遇超时及域名解析错误求助

Node.js + MySQL 部署Railway平台连接错误排查方案

针对 connect ETIMEDOUT 错误

  • 核对Railway MySQL实例的连接凭据准确性:
    • 确认主机地址(host)是Railway提供的完整域名,禁止使用localhost或裸IP(Railway数据库默认通过域名访问)
    • 端口号默认是3306,不要随意修改
    • 用户名、密码需与Railway控制台显示的数据库凭据完全一致,注意大小写、特殊字符的正确性
  • 检查Railway数据库的网络访问规则:
    • Railway默认允许同项目内的服务访问数据库,若为外部测试,需确认是否开启公网访问(部署场景优先使用内部网络)
  • 本地验证连通性:
    • 用Railway提供的临时连接字符串,通过本地数据库工具(如Navicat、DBeaver)测试连接,确认凭据本身无问题

针对 getaddrinfo ENOTFOUND 错误

该错误为DNS解析失败,核心是数据库主机地址配置有误:

  • 检查dotenv环境变量加载:
    • 确认.env文件中的DB_HOST是Railway提供的数据库完整域名,无拼写错误(如多/漏字符、遗漏域名后缀)
    • 确保代码中正确读取环境变量,比如用process.env.DB_HOST,避免硬编码旧地址
  • 配置Railway平台环境变量:
    • 部署时不要依赖本地.env文件,需在Railway控制台的项目环境变量中添加所有数据库相关变量:DB_HOST、DB_USER、DB_PASSWORD、DB_NAME、DB_PORT
    • 确认Railway环境变量无空格、多余符号,尤其是主机地址字段
  • 检查mysql2连接池配置:
    确保连接池参数正确读取环境变量,示例配置如下:
    const pool = mysql.createPool({
      host: process.env.DB_HOST,
      user: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
      database: process.env.DB_NAME,
      port: process.env.DB_PORT || 3306,
      waitForConnections: true,
      connectionLimit: 10,
      queueLimit: 0
    });
    
    禁止将主机地址写为IP或错误域名

通用排查步骤

  • 修改环境变量后,必须重启Railway后端服务才能生效
  • 查看Railway服务日志:在控制台日志中确认环境变量是否正确加载,是否输出错误的主机地址
  • 确认Railway数据库实例处于运行状态:在控制台检查数据库服务状态,排查是否有异常停机情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:03:14