Делайте собственную функцию для запросов.
Если запрос не прошел - Пробуем подключиться к базе еще раз и затем заново выполнить запрос.
Если вторая попытка тоже не прошла - возвращаем пустой ответ, чтобы не было ошибок на стороне сервера и он не крахнулся.
let mysqldb = require("mysql");
let mysql = null;
function connect(callback=null){
console.log("MYSQL TAKE CONNECT");
mysql=mysqldb.createConnection({host: "localhost", user: "*", password: "*", database:"*"});
mysql.on('error', function(err) {
console.log("---" +err.message);
console.log("---" +err.code);
});
if(callback)setTimeout(callback,100);
}
connect();//Первичное подключение
//Функция для запросов к базе
function my_mysql_query_function(q, paramas, callback=null, reconnect=true){
//Пробуем сделать запрос
mysql.query(q,paramas,function(err,rows){
if(err){//Запрос не прошел
console.log("mysql_query failed! calling again...");
if(reconnect)//Если разрешено повторить попытку
connect(function(){ //Переподключаемся к базой
my_mysql_query_function(q,params,callback,false);//Повторяем заново с меткой false == больше не пробовать
});
else callback([]); //Если нельзя больше пробовать подключаться - возвращаем пустой массив ответа
}else{
if(callback) callback(rows); // если запрос успешный то возвращаем массив ответа
}
});
}