ホームページ >データベース >mysql チュートリアル >Node.js MySQL の「接続が失われました: サーバーが接続を閉じました」エラーを解決する方法?

Node.js MySQL の「接続が失われました: サーバーが接続を閉じました」エラーを解決する方法?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-13 04:42:08633ブラウズ

How to Resolve Node.js MySQL

Node.js MySQL: 「接続が失われました: サーバーが接続を閉じました」エラーの解決

Node.js を使用して MySQL データベースへの接続を確立するとき。 js を使用すると、「接続が失われました: サーバーが接続を閉じました。」というエラーが発生する可能性があります。このエラーは通常、TCP 接続がサーバーによって中断される 12:00 ~ 2:00 の時間帯に発生します。

解決策 1: 自動再接続処理

このエラーを自動的に処理するには、次のコードを実装します。

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

var connection;

function handleDisconnect() {
  connection = mysql.createConnection(db_config); 
  connection.connect(function(err) { 
    if(err) { 
      console.log('error when connecting to db:', err);
      setTimeout(handleDisconnect, 2000); 
    } 
  }); 
  connection.on('error', function(err) {
    console.log('db error', err);
    if(err.code === 'PROTOCOL_CONNECTION_LOST') { 
      handleDisconnect(); 
    } else { 
      throw err; 
    }
  });
}

handleDisconnect();

このコードでは、 MySQLサーバー。サーバーの再起動またはアイドル タイムアウトにより接続が失われた場合、handleDisconnect() 関数が呼び出され、接続が再確立されます。

解決策 2: 手動再接続

提供されたコードでは、自動再接続メカニズムの一部が実装されていますが、回線接続後の部分が欠落しています = mysql.createConnection(kf_config);。次のコードで実装が完了します。

connection.connect(function(err) {
  if (err) {
    console.log("Error connecting to KFC: " + err);
  } else {
    console.log("KF connected!");
  }
});

接続喪失イベントを自動的に処理するには、接続オブジェクトにエラー リスナーを登録する必要もあります。例:

connection.on('error', function(err) {
  if (err.code === 'PROTOCOL_CONNECTION_LOST') {
    console.log("KF connection lost. Reconnecting...");
    handleKFDisconnect();
  } else {
    throw err;
  }
});

これらの手順に従うことで、Node.js MySQL アプリケーションが接続の喪失を適切に処理し、自動的に接続を再確立するようにすることができます。

以上がNode.js MySQL の「接続が失われました: サーバーが接続を閉じました」エラーを解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。