ホームページ > データベース > mysql チュートリアル > Node.js MySQL アプリケーションでの「接続喪失」エラーを効果的に処理するにはどうすればよいですか?

Node.js MySQL アプリケーションでの「接続喪失」エラーを効果的に処理するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-13 03:21:09
オリジナル
503 人が閲覧しました

How Can I Effectively Handle

Node.js MySQL: 「接続喪失」エラーを効果的に処理する

Node.js で MySQL を使用すると、エラーが発生する場合がありますサーバーが接続を閉じたことを示します。この問題は、サーバーによる TCP 接続のシャットダウンが原因で発生することがよくあります。

エラーについて

エラーは通常、次のように表示されます。

Error: Connection lost: The server closed the connection.
...
ログイン後にコピー

これは、Node.js アプリケーションと MySQL サーバーの間に確立された接続が終了したことを示唆しています。

解決策

この問題を解決するには、接続が失われたときに自動的に再接続する接続処理メカニズムを利用できます。以下は、サーバーの切断を処理する方法を示すコード スニペットです:

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

var connection;

function handleDisconnect() {
  connection = mysql.createConnection(db_config); // Recreate the connection

  connection.connect(function(err) {
    if (err) {
      console.log('error when connecting to db:', err);
      setTimeout(handleDisconnect, 2000); // Delay before reconnecting
    }
  });

  connection.on('error', function(err) {
    console.log('db error', err);
    if (err.code === 'PROTOCOL_CONNECTION_LOST') { // Lost connection
      handleDisconnect();
    } else {
      throw err;
    }
  });
}

handleDisconnect();
ログイン後にコピー

分析

  • handleDisconnect() 関数は、MySQL サーバーとの新しい接続を確立します。 createConnection() メソッドを使用します。
  • また、エラーのイベント リスナーも設定します。 event.
  • 「PROTOCOL_CONNECTION_LOST」エラー (接続喪失のコード) により接続が失われると、handleDisconnect() 関数が再帰的に呼び出され、新しい接続を確立します。
  • それ以外の場合、エラーがスローされます。

追加注

handleDisconnect() 関数は、手動で呼び出すことも、最初の接続試行が失敗したときに自動的に呼び出すこともできます。これにより、接続が予期せず失われた場合でも、アプリケーションは動作を継続できます。

この接続処理メカニズムを実装することで、接続の喪失による Node.js/MySQL アプリケーションのクラッシュを防ぐことができます。これにより、プロジェクトの信頼性と安定性が大幅に向上します。

以上がNode.js MySQL アプリケーションでの「接続喪失」エラーを効果的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート