Задать вопрос
  • Постоянно падает сервер на node.js?

    Aziz87
    @Aziz87
    80LVL
    Делайте собственную функцию для запросов. 
    Если запрос не прошел - Пробуем подключиться к базе еще раз и затем заново выполнить запрос.
    Если вторая попытка тоже не прошла - возвращаем пустой ответ, чтобы не было ошибок на стороне сервера и он не крахнулся.
    
    
    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); // если запрос успешный то возвращаем массив ответа
          }
        });
    }
    Ответ написан