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
相关产品推荐
相关产品推荐

