PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR После 8 вечера

#javascript #mysql #sql #node.js #express

#язык JavaScript #mysql #sql #node.js #экспресс

Вопрос:

У меня проблема с подключением к MySQL. После 8 часов вечера (по моему местному времени) соединение теряется. Поэтому я изменил свой код, всякий раз , когда mysql бросает PROTOCOL_CONNECTION_LOST , он попытается подключиться к mysql. Сообщение об ошибке PROTOCOL_CONNECTION_LOST исчезло, но оно выдает новый код ошибки PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR при попытке подключиться к серверу. Это мой код для создания соединения с 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;  

Это мой стек ошибок

 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.lt;anonymousgt; (/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 | }  

Он может повторно подключиться, когда я выполняю какую-либо команду, например pm2 logs , или другую команду с pm2 (я использую pm2 для команды запуска узла). Планирую использовать функцию cron для перезапуска моего сервиса каждые 8 вечера, но если это можно решить без перезапуска сервиса, это будет очень полезно. Спасибо.