建连接与连接池要点
- 生产环境用 createPool 建连接池,别每次请求都新建连接
- pool.promise() 拿到 Promise 版,配合 await 写起来更顺
- connectionLimit 控制最大连接数,按并发量调,常见 10 左右
- waitForConnections 为 true 时连接占满会排队,不会直接报错
- 单次脚本可用 createConnection,用完记得 conn.end() 释放
- 连不上先查 host、账号、防火墙,报错信息里都写明了
建连接与连接池示例
const mysql = require('mysql2');
// 生产首选:连接池
const pool = mysql.createPool({
host: '127.0.0.1',
user: 'app_user',
password: 'app_pass',
database: 'shop_db',
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
const promisePool = pool.promise();
// 单次脚本:直连,用完立刻关
const conn = mysql.createConnection({
host: '127.0.0.1', user: 'app_user', password: 'app_pass', database: 'shop_db'
});
conn.connect(function(err) {
if (err) { console.error('连不上:', err.message); return; }
console.log('连上了');
conn.end();
});
避坑提醒:连接池大小不是越大越好,通常设 CPU 核数的 2~3 倍;过大反而让数据库线程切换吃紧。