Tengo un problema con la conexión a MySQL. Después de las 8 p. m. (mi hora local), se pierde la conexión. Así que modifiqué mi código, siempre que mysql arroje PROTOCOL_CONNECTION_LOST , intentará volver a conectarse a mysql. El error de PROTOCOL_CONNECTION_LOST desapareció, pero da un nuevo código de error PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR al intentar conectarse al servidor. Este es mi código para crear una conexión a MySQL.
const dbConn = mysql.createConnection({ host : 'localhost', user : 'xxxx', password : 'xxxx', database : 'test' }); function handleDisconnect() { dbConn.connect(function(err, connection) { if(err) { console.log('error when connecting to db:', err); setTimeout(handleDisconnect, 2000); } }); dbConn.on('error', function(err) { console.log('db error', err); if(err.code === 'PROTOCOL_CONNECTION_LOST') { handleDisconnect(); } else { throw(err) } }); } handleDisconnect(); module.exports = dbConn;Esta es mi pila de errores
0|index | error when connecting to db: Error: Cannot enqueue Handshake after fatal error. 0|index | at Protocol._validateEnqueue (/home/mydev/SOBATku/node_modules/mysql/lib/protocol/Protocol.js:212:16) 0|index | at Protocol._enqueue (/home/mydev/SOBATku/node_modules/mysql/lib/protocol/Protocol.js:138:13) 0|index | at Protocol.handshake (/home/mydev/SOBATku/node_modules/mysql/lib/protocol/Protocol.js:51:23) 0|index | at Connection.connect (/home/mydev/SOBATku/node_modules/mysql/lib/Connection.js:116:18) 0|index | at handleDisconnect (/home/mydev/SOBATku/config/db.config.js:34:10) 0|index | at Connection.<anonymous> (/home/mydev/SOBATku/config/db.config.js:45:7) 0|index | at Connection.emit (node:events:390:28) 0|index | at Connection._handleProtocolError (/home/mydev/SOBATku/node_modules/mysql/lib/Connection.js:423:8) 0|index | at Protocol.emit (node:events:390:28) 0|index | at Protocol._delegateError (/home/mydev/SOBATku/node_modules/mysql/lib/protocol/Protocol.js:398:10) { 0|index | code: 'PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR', 0|index | fatal: false 0|index | } Puede volver a conectarse cuando hago algún comando como registros de pm2 logs u otro comando con pm2 (uso pm2 para el comando de ejecución del nodo). Planeo usar la función cron para reiniciar mi servicio cada 8 p.m., pero si se puede resolver sin reiniciar el servicio, será muy útil. Gracias.