【问题标题】:Nodejs, mysql 'connection lost the server closed the connection'Nodejs,mysql'连接丢失服务器关闭连接'
【发布时间】:2019-07-05 07:16:30
【问题描述】:

我将mysql连接到nodejs。一段时间后,你会得到错误:

'连接丢失服务器关闭连接'.

我需要你的帮助。

发生错误,我们添加了函数handleDisconnect。但是,一旦解决了断开连接问题,Connection lost the server closed the connection 会再次出现第二个错误。

我想知道为什么它应该只有一次而不是第二次。

ps:使用翻译器描述可能不流畅。

这是app.js 文件的一部分

// connection to databases
var mysql_dbc = require('./config/db_con')();
var connection = mysql_dbc.init();
mysql_dbc.test_open(connection);

// Added Code
handleDisconnect(connection);
function handleDisconnect(client) {

  client.on('error', function (error) {

    if (!error.fatal) return;

    if (error.code !== 'PROTOCOL_CONNECTION_LOST') throw err;

    console.error('> Re-connecting lost MySQL connection: ' + error.stack);

    mysql_dbc.test_open(connection);

  });

};

【问题讨论】:

    标签: mysql node.js


    【解决方案1】:

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

    var mysql = require("mysql");
    var configuration = {
      host: "localhost",
      user: "root",
      password: "mysql",
      database: "blog"
    };
    var connection;
    
    function handleDisconnect() {
      connection = mysql.createConnection(configuration);
    
      connection.connect(function(err) {
        if (err) {
          console.log("error when connecting to db:", err);
          setTimeout(handleDisconnect, 2000);
        }else{
            console.log("connection is successfull");
        }
      });
      connection.on("error", function(err) {
        console.log("db error", err);
        if (err.code === "PROTOCOL_CONNECTION_LOST") {
          handleDisconnect();
        } else {
          throw err;
        }
      });
    }
    handleDisconnect();
    

    由于网络问题,您可能会失去与 MySQL 服务器的连接, 服务器使您超时,服务器正在重新启动或崩溃。 所有这些事件都被视为致命错误。

    通过建立新连接来重新连接连接。 一旦终止,现有的连接对象就不能按设计重新连接。

    使用 Pool,断开的连接将从池中删除,从而释放空间,以便在下一次 getConnection 调用时创建新连接。

    【讨论】:

    • 感谢您的第一时间回复。我在这部分得到一个错误。你有错字吗? if(err) { sometimes).
    • 是的,抱歉删除了它。你现在可以检查一下。它应该工作
    猜你喜欢
    • 2013-12-11
    • 2013-08-28
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    相关资源
    最近更新 更多