首頁 > 資料庫 > mysql教程 > 為什麼我的 Node.js MySQL 連線在午夜左右不斷斷線?

為什麼我的 Node.js MySQL 連線在午夜左右不斷斷線?

Susan Sarandon
發布: 2024-12-09 01:51:12
原創
1023 人瀏覽過

Why Does My Node.js MySQL Connection Keep Dropping Around Midnight?

MySQL 連線遺失:解決「連線遺失:伺服器關閉連線」錯誤

使用Node.js 和MySQL 時,您偶爾可能會遇到錯誤,表示伺服器關閉了連線。這種情況通常發生在凌晨 12:00 至 2:00 左右,讓您感到困惑。錯誤訊息通常顯示為:

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 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) {              // Attempt to connect
    if(err) {
      console.log('error when connecting to db:', err);
      setTimeout(handleDisconnect, 2000); // Delay reconnection attempts
    }
  });

  connection.on('error', function(err) {
    console.log('db error', err);
    if(err.code === 'PROTOCOL_CONNECTION_LOST') { // Connection lost due to server restart or idle timeout
      handleDisconnect();
    } else {
      throw err;
    }
  });
}

handleDisconnect();
登入後複製

此程式碼執行以下操作:

  1. 在handleDisconnectect物件.
  2. 嘗試透過呼叫connection.connect()來重新連接handleDisconnect。
  3. 如果連線時發生錯誤,它會記錄錯誤並安排在 2 秒內重新連線嘗試,以避免過多的重新連線嘗試。
  4. 它在連接上建立一個「錯誤」事件偵聽器物件來監視連接生命週期中可能出現的任何錯誤。
  5. 當偵測到「PROTOCOL_CONNECTION_LOST」錯誤時,表示由於伺服器重新啟動或空閒逾時而導致連線遺失,會再次觸發handleDisconnect函數重新建立並重新連線。

透過實作此方法,可以有效處理MySQL連線遺失錯誤並確保無縫資料庫連接在您的 Node.js 應用程式中。

以上是為什麼我的 Node.js MySQL 連線在午夜左右不斷斷線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板