Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Node.js MySQL 'Sambungan hilang: Pelayan menutup sambungan' Ralat?

Bagaimana untuk Menyelesaikan Node.js MySQL 'Sambungan hilang: Pelayan menutup sambungan' Ralat?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-13 04:42:08690semak imbas

How to Resolve Node.js MySQL

Node.js MySQL: Menyelesaikan "Sambungan hilang: Pelayan menutup sambungan" Ralat

Apabila membuat sambungan ke pangkalan data MySQL menggunakan Node. js, adalah mungkin untuk menghadapi ralat yang menyatakan "Sambungan hilang: Pelayan menutup sambungan." Ralat ini biasanya berlaku dalam tempoh seperti 12:00 hingga 2:00, apabila sambungan TCP diganggu oleh pelayan.

Penyelesaian 1: Pengendalian Penyambungan Semula Automatik

Kepada mengendalikan ralat ini secara automatik, laksanakan kod berikut:

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();

Dalam kod ini, sambungan adalah ditubuhkan dengan pelayan MySQL. Jika sambungan terputus disebabkan oleh pelayan dimulakan semula atau tamat masa melahu, fungsi handleDisconnect() dipanggil, yang mewujudkan semula sambungan.

Penyelesaian 2: Penyambungan Semula Manual

Dalam kod yang disediakan, anda telah melaksanakan sebahagian daripada mekanisme penyambungan semula automatik, tetapi terdapat bahagian yang hilang selepas sambungan talian = mysql.createConnection(kf_config);. Kod berikut melengkapkan pelaksanaan:

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

Anda juga harus mendaftarkan pendengar ralat pada objek sambungan untuk mengendalikan peristiwa kehilangan sambungan secara automatik. Contohnya:

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

Dengan mengikut langkah-langkah ini, anda boleh memastikan bahawa aplikasi MySQL Node.js anda mengendalikan kehilangan sambungan dengan anggun dan mewujudkan semula sambungan secara automatik.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Node.js MySQL 'Sambungan hilang: Pelayan menutup sambungan' Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn