当前位置: 首页 > 面试题库 >

nodejs mysql错误:连接丢失服务器关闭了连接

云伯寅
2023-03-14
问题内容

当我使用节点mysql时,在12:00到2:00之间出现错误,表明服务器已关闭TCP连接。这是完整的消息:

Error: Connection lost: The server closed the connection.
at Protocol.end (/opt/node-v0.10.20-linux-x64/IM/node_modules/mysql/lib/protocol/Protocol.js:73:13)
at Socket.onend (stream.js:79:10)
at Socket.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:920:16
at process._tickCallback (node.js:415:13)

有解决办法。但是,以这种方式尝试后,问题也会出现。现在我不知道该怎么办。有人遇到这个问题吗?

这是我按照解决方案编写的方式:

    var handleKFDisconnect = function() {
    kfdb.on('error', function(err) {
        if (!err.fatal) {
            return;
        }
        if (err.code !== 'PROTOCOL_CONNECTION_LOST') {
            console.log("PROTOCOL_CONNECTION_LOST");
            throw err;
        }
        log.error("The database is error:" + err.stack);

        kfdb = mysql.createConnection(kf_config);

        console.log("kfid");

        console.log(kfdb);
        handleKFDisconnect();
    });
   };
   handleKFDisconnect();

问题答案:

尝试使用以下代码来处理服务器断开连接:

var db_config = {
  host: 'localhost',
    user: 'root',
    password: '',
    database: 'example'
};

var connection;

function handleDisconnect() {
  connection = mysql.createConnection(db_config); // Recreate the connection, since
                                                  // the old one cannot be reused.

  connection.connect(function(err) {              // The server is either down
    if(err) {                                     // or restarting (takes a while sometimes).
      console.log('error when connecting to db:', err);
      setTimeout(handleDisconnect, 2000); // We introduce a delay before attempting to reconnect,
    }                                     // to avoid a hot loop, and to allow our node script to
  });                                     // process asynchronous requests in the meantime.
                                          // If you're also serving http, display a 503 error.
  connection.on('error', function(err) {
    console.log('db error', err);
    if(err.code === 'PROTOCOL_CONNECTION_LOST') { // Connection to the MySQL server is usually
      handleDisconnect();                         // lost due to either server restart, or a
    } else {                                      // connnection idle timeout (the wait_timeout
      throw err;                                  // server variable configures this)
    }
  });
}

handleDisconnect();

在您的代码中,我错过了之后的部分 connection = mysql.createConnection(db_config);



 类似资料:
  • Express 错误:连接丢失:服务器关闭了连接。 大佬们如何解决 var express = require('express'); var app = express(); const cors = require('cors'); app.use(cors()); app.use(express.static('./public')) const bodyParser = require('

  • 我是Ruby on Rails的新手。我通过教程创建了两个基本的演示应用程序 PG::错误 服务器意外关闭了连接这可能意味着服务器在处理请求之前或处理请求时异常终止。 而且有时(通常是在我重新启动postgresql时), PG::错误 服务器意外关闭了连接这可能意味着服务器在处理请求之前或处理请求时异常终止。无法发送启动数据包:管道中断 这是我的堆栈跟踪 我在Ubuntu12.04(因为goog

  • 问题内容: 我试图重现我在EC2上的node.js应用中看到的MySQL错误,其中包含节点mysql库: 连接丢失:服务器关闭了连接。 我无法在本地重现该错误-通过我的代码可以很好地处理数据库- 它仅每隔几秒钟重新检查一次,并在重新启动后重新连接到db。在EC2上,它发生在太平洋时间凌晨4点左右,但是数据库仍然正常运行。 我想 用我的本地mysql重现崩溃 在我的mysql帮助器模块中添加我需要的

  • 我一直试图通过Postgre DB Server运行这个批处理文件,并运行两个不同的sql文件,如下所示: 但是问题来了,有时我会得到下面的命令query1或query2的错误: 这种情况只是偶尔发生,所以我不完全确定为什么会发生。有人能解释为什么会这样,以及这个问题是否有解决办法吗?谢谢! 更新:在实际的Postgre应用程序中尝试打开远程服务器时,我有时也会遇到相同的错误:“出现错误:”服务器

  • 我正在尝试从macos上使用swift开发的应用程序连接到realm object server 当我尝试连接时,会出现“网络连接丢失”错误,但我可以从浏览器中毫无问题地打开领域服务器。。顺便说一句,这个问题最近发生了,它在几周前工作正常 这里,用户总是,错误描述是 这发生在本地服务器和一个托管在数字海洋 服务器版本1.8。3. xcode控制台日志 2018-01-15 12:46:07.077

  • 我进入了一个客户机和服务器进行通信、相互发送消息的阶段。 我遇到的问题是如何关闭连接而不会导致错误? 如果我终止其中一个导致连接丢失的应用程序(服务器或客户端),然后导致等待输入的循环无限期地循环,并显示null。 我试图关闭插座,缓冲区,甚至线程,都不工作。 这是客户端 这是服务器端 两者都使用这些类: 唯一的区别是服务器在上面所说的位置有这个位, 所以基本上,客户端连接,服务器接受,然后客户端