首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >重现MySQL错误:服务器关闭了连接(node.js)

重现MySQL错误:服务器关闭了连接(node.js)
EN

Stack Overflow用户
提问于 2012-10-23 03:17:23
回答 5查看 20.8K关注 0票数 17

我正在尝试重现我在EC2上的node mysql library上的node.js应用程序中看到的MySQL错误

连接丢失:服务器已关闭连接。

我不能在本地重现这个错误-我的代码可以很好地处理杀死数据库-它只是每隔几秒钟重新检查一次,并在重新启动后重新连接到数据库。在EC2上,它发生在太平洋时间凌晨4点左右,但数据库仍然正常运行。

我想

  1. 使用本地mysql
  2. 重现崩溃在mysql助手模块中添加任何我需要的逻辑来处理这个

以下是我的node.js应用程序中的错误:

2012-10-22T08:45:40.518Z -错误: uncaughtException date=Mon Oct 22 2012 08:45:40 GMT+0000 (UTC),pid=14184,uid=0,gid=0,cwd=/home/ec2-GMT+0000/my-app,execPath=/usr/bin/nodejs,version=v0.6.18,argv=/usr/local/bin/node,/home/ec2-user/my-app/app.js,--my-app,rss=15310848,heapTotal=6311392,heapUsed=5123292,loadavg=0.0029296875,0.0146484375,0.04541015625,uptime=3238343.511107486,trace=column=13,file=/home/ec2-user/my-app/node_modules/mysql/lib/protocol/Protocol.js,function=Protocol.end,line=63,method=end,native=false,column=10,file=stream.js,function=Socket.onend,line=80,method=onend,native=false,column=20,file=events.js,function=Socket.emit,line=88,method=emit,native=false,column=51,file=net.js,:连接丢失:服务器关闭了连接。,

在Protocol.end (/home/ec2-user/my-app/node_modules/mysql/lib/protocol/Protocol.js:63:13),at Socket.onend (stream.js:80:10),at Socket.emit (events.js:88:20),at TCP.onread (net.js:388:51)

下面是我的代码(mysql帮助模块):

代码语言:javascript
复制
module.exports = function (conf,logger) {
  var mysql = require('mysql');

  var connectionState = false;
  var connection = mysql.createConnection({
    host: conf.db.hostname,
    user: conf.db.user,
    password: conf.db.pass,
    database: conf.db.schema,
    insecureAuth: true
  });

  function attemptConnection(connection) {
    if(!connectionState){
      connection = mysql.createConnection(connection.config);
      connection.connect(function (err) {
        // connected! (unless `err` is set)
        if (err) {
          logger.error('mysql db unable to connect: ' + err);
          connectionState = false;
        } else {
          logger.info('mysql connect!');
          connectionState = true;
        }
      });
      connection.on('close', function (err) {
        logger.error('mysqldb conn close');
        connectionState = false;
      });
      connection.on('error', function (err) {
        logger.error('mysqldb error: ' + err);
        connectionState = false;

        /*
        if (!err.fatal) {
          return;
        }
        if (err.code !== 'PROTOCOL_CONNECTION_LOST') {
          throw err;
        }
        */
      });
    }
  }
  attemptConnection(connection);

  var dbConnChecker = setInterval(function(){
    if(!connectionState){
      logger.info('not connected, attempting reconnect');
      attemptConnection(connection);
    }
  }, conf.db.checkInterval);

  return connection;
};
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13018227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档