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

Node.js连接MySQL出现PROTOCOL_CONNECTION_LOST错误求助

解决MySQL闲置导致的PROTOCOL_CONNECTION_LOST错误

这个PROTOCOL_CONNECTION_LOST错误我太熟悉了——确实是MySQL服务器把长时间闲置的连接给主动关闭了。下面给你几个实用的解决方案,从代码调整到服务器配置都有,你可以根据自己的场景选择:

方案1:开启连接自动重连并监听错误

在创建单连接的时候,开启自动重连选项,同时监听连接错误事件,一旦检测到连接丢失就主动重连:

const mysql = require('mysql');
const connection = mysql.createConnection({
  host: '你的数据库地址',
  user: '数据库用户名',
  password: '数据库密码',
  database: '目标数据库',
  reconnect: true // 开启自动重连
});

// 监听连接错误,处理丢失的情况
connection.on('error', function(err) {
  if (err.code === 'PROTOCOL_CONNECTION_LOST') {
    console.log('数据库连接丢失,正在尝试重新连接...');
    connection.connect();
  } else {
    // 其他错误直接抛出,方便排查
    throw err;
  }
});

方案2:改用连接池管理连接(推荐生产环境使用)

连接池会自动维护连接的生命周期,闲置超时的连接会被自动回收或重建,不用手动处理重连问题,这是更稳定的方案:

const mysql = require('mysql');
const pool = mysql.createPool({
  host: '你的数据库地址',
  user: '数据库用户名',
  password: '数据库密码',
  database: '目标数据库',
  connectionLimit: 10, // 连接池最大连接数,根据业务调整
  idleTimeoutMillis: 30000 // 闲置连接超时时间,建议小于MySQL的wait_timeout
});

// 从连接池获取连接执行查询
pool.getConnection(function(err, connection) {
  if (err) throw err;

  connection.query('SELECT * FROM 你的表名', function(error, results) {
    connection.release(); // 用完连接记得释放回池
    if (error) throw error;
    console.log('查询结果:', results);
  });
});

方案3:调整MySQL服务器的超时配置

如果不想修改代码,可以延长MySQL服务器允许连接闲置的时间。注意这个设置会影响所有数据库连接,要根据服务器资源合理调整:

  • 临时生效(重启MySQL后失效):
    登录MySQL执行以下SQL:
    SET GLOBAL wait_timeout = 86400; -- 设置为24小时,单位是秒
    SET GLOBAL interactive_timeout = 86400;
    
  • 永久生效:
    找到MySQL的配置文件(Linux是my.cnf,Windows是my.ini),在[mysqld]节点下添加:
    [mysqld]
    wait_timeout = 86400
    interactive_timeout = 86400
    
    保存后重启MySQL服务即可。

方案4:定期发送心跳查询保持连接活跃

在应用层定时发送一个简单的查询(比如SELECT 1),让连接保持活跃,避免被MySQL判定为闲置关闭:

// 每5分钟发送一次心跳,时间要小于MySQL的wait_timeout
setInterval(function() {
  connection.query('SELECT 1', function(err) {
    if (err) {
      console.log('心跳查询失败,尝试重新连接...');
      connection.connect();
    }
  });
}, 300000); // 300000毫秒 = 5分钟

内容的提问来源于stack exchange,提问作者Srinivasa K C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:22:42