Why Does My Node.js MySQL Connection Keep Dropping Around Midnight?
Dec 09, 2024 am 01:51 AMMySQL Connection Lost: Solving the "Connection lost: The server closed the connection" Error
When working with Node.js and MySQL, you may occasionally encounter an error indicating that the server closed the connection. This usually occurs around 12:00 to 2:00 AM, leaving you puzzled. The error message often appears as:
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)
Despite attempting the recommended solution, the issue persists. Here's a more comprehensive approach to handle this error effectively:
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();
This code does the following:
- Recreates the MySQL connection object in the handleDisconnect function.
- Attempts to reconnect by calling connection.connect() within handleDisconnect.
- If an error occurs while connecting, it logs the error and schedules a reconnection attempt in 2 seconds to avoid excessive reconnection attempts.
- It establishes an 'error' event listener on the connection object to monitor any errors that may arise during the connection lifecycle.
- When a 'PROTOCOL_CONNECTION_LOST' error is detected, signifying a lost connection due to server restart or idle timeout, it triggers the handleDisconnect function again to recreate and reconnect.
By implementing this approach, you can effectively handle MySQL connection lost errors and ensure seamless database connectivity in your Node.js applications.
The above is the detailed content of Why Does My Node.js MySQL Connection Keep Dropping Around Midnight?. For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Reduce the use of MySQL memory in Docker

How do you alter a table in MySQL using the ALTER TABLE statement?

How to solve the problem of mysql cannot open shared library

Run MySQl in Linux (with/without podman container with phpmyadmin)

What is SQLite? Comprehensive overview

Running multiple MySQL versions on MacOS: A step-by-step guide

What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)?

How do I configure SSL/TLS encryption for MySQL connections?
