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

Node.js无法连接MariaDB:连接池超时,命令行可正常连接

问题解决:Node.js连接MariaDB连接池超时错误

核心问题

你代码中创建连接池时使用了错误的配置参数名:hostname,而MariaDB Node.js驱动的正确参数应为**host**。这个错误导致驱动无法识别数据库主机地址,进而无法建立连接,最终触发超时。

修正步骤

1. 修正连接池配置参数

将createPool中的hostname替换为host:

const pool = mariadb.createPool({
  host: 'mariadb', // 此处修正为host
  user: 'simha',
  password: 'krishna',
  database: 'blogs',
  port: 3306 // 可选,与命令行指定的端口保持一致,避免默认端口不一致问题
});

2. 建议使用环境变量替代硬编码(优化)

你已经加载了dotenv,但代码中直接硬编码了数据库凭据,建议改为读取环境变量,提升安全性和可配置性:

const pool = mariadb.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
});

确保你的.env文件包含对应配置:

DB_HOST=mariadb
DB_USER=simha
DB_PASSWORD=krishna
DB_NAME=blogs
DB_PORT=3306

为什么命令行能连接但代码不行?

命令行使用--host mariadb指定主机,对应驱动中的host参数;而你代码中误用了hostname,驱动无法解析该参数,相当于没有指定主机地址,自然无法建立连接,最终超时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:07:04