RPI + NodeJS, ECONNRESET MYSQL

Fermé
Adri77220 Messages postés 6 Date d'inscription mercredi 2 décembre 2020 Statut Membre Dernière intervention 21 avril 2021 - Modifié le 20 déc. 2020 à 21:44
 Utilisateur anonyme - 27 déc. 2020 à 10:51
Bonjour,
J'ai créé un bot discord avec une base de données MYSQL et j'ai hébergé mon bot sur mon raspberry pi

le problème est que le Bot après des heures d'activation, il s'arrête et envoie une erreur mais je ne comprends pas pourquoi car l'erreur dit que le Bot n'est pas connecté à la base de données alors qu'au démarrage il était bien connecté

Je pense que la base de données après quelques heures d'inactivité elle se met en veille mais je ne comprends pas pourquoi

Voici mon erreur



events.js:291
throw er; // Unhandled 'error' event
^

Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:209:20)
Emitted 'error' event on Connection instance at:
at Connection._handleProtocolError (/home/pi/Desktop/Glow-Bot/Glow-Bot.js/node_modules/mysql/lib/Connection.js:423:8)
at Protocol.emit (events.js:314:20)
at Protocol._delegateError (/home/pi/Desktop/Glow-Bot/Glow-Bot.js/node_modules/mysql/lib/protocol/Protocol.js:398:10)
at Protocol.handleNetworkError (/home/pi/Desktop/Glow-Bot/Glow-Bot.js/node_modules/mysql/lib/protocol/Protocol.js:371:10)
at Connection._handleNetworkError (/home/pi/Desktop/Glow-Bot/Glow-Bot.js/node_modules/mysql/lib/Connection.js:418:18)
at Socket.emit (events.js:314:20)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
errno: 'ECONNRESET',
code: 'ECONNRESET',
syscall: 'read',
fatal: true
}

5 réponses

Bonjour, j'ai redirigé la discussion dans la catégorie MySQL.

Concernant ton problème, après avoir fait quelques recherches, je suis tombé sur un message du forum StackOverflow :
  • MySQL "tue" les connexions inactives. Par exemple si ton bot est resté longtemps sans faire une requête, il sera déconnecté. Il est suggéré d'envoyer régulièrement une requête basique pour montrer à MySQL que tu es toujours là. Par exemple, faire un
    SELECT 1;
    .
  • Il est également suggéré d'augmenter le délai avant la déconnexion automatique.

https://stackoverflow.com/questions/22900931/mysql-giving-read-econnreset-error-after-idle-time-on-node-js-server/22906189#22906189

Pour ma part j'opterais pour la 1ère solution, qui consiste à envoyer une requête basique. Il faudra déterminer le délai avant le kick de MySQL, pour "faire du bruit" avant.
0