Error usando librería felixge/node-mysql

24 views
Skip to first unread message

Ricky

unread,
Apr 27, 2015, 12:20:29 PM4/27/15
to node...@googlegroups.com
Hola compañeros,
No se si alguien más haya trabajado con esta librería y le haya aparecido este error (El cual me aparece en por lo menos 30 líneas de código):

db error { [Error: Connection lost: The server closed the connection.] fatal: true, code: 'PROTOCOL_CONNECTION_LOST' }



Tengo el siguiente código para manejar la librería:

var mysql = require('mysql');
var md5 = require('MD5');
module.exports = function(usuario, contrasena, db){
   
var db_config = {
         host
: 'localhost',
         user
: usuario,
         password
: contrasena,
         database
: db,
         charset
: 'UTF8_GENERAL_CI'
   
};


   
function handleDisconnect() {
      coneccion
= mysql.createConnection(db_config);


      coneccion
.connect(function(err) {              
         
if(err) {
            setTimeout
(handleDisconnect, 2000);
         
}
     
});
        coneccion.on('error', function(err) {
         if(err.code === 'PROTOCOL_CONNECTION_LOST') {
            handleDisconnect
();
         
} else {        
           
throw err;
         
}
     
});
   
}
   handleDisconnect
();
};

 He estado averiguando y por lo que me comentan este error tiene relación con el número máximo de conexiones simultaneas permitidas por el servidor Mysql. En mi caso tengo 151 conexiones como máximo, sin embargo me gustaría saber si realmente cuál es el origen de este error. ¿Alguien tiene alguna idea?

Muchas gracias por su tiempo.

Javier Viola

unread,
Apr 27, 2015, 12:26:04 PM4/27/15
to node...@googlegroups.com
Hola Ricky,
                    Esa misma librería tiene la opción de usar un pool de conexiones ( https://github.com/felixge/node-mysql/#pooling-connections ), esto te permite que la aplicación maneje un pool de conexiones y saber cual es el número máximo de conexiones que podrá utilizar.

Por otro lado, podes ver desde el lado del mysql cuantas connections tienen abiertas tu app contra la DB y también ten en cuenta de cerrar las conexiones porque podrías tener un leak the conexiones en tu aplicación.

Saludos!



--
Has recibido este mensaje porque estás suscrito al grupo "NodeJS ES" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a nodejs-es+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

DiegoUG

unread,
Apr 27, 2015, 12:51:49 PM4/27/15
to nodejs-es
Creo que no estas desconectando las conexiones abiertas? necesitas que estén abiertas siempre?

var mysql = require('mysql'); var queries = require('./queries'); var dbConfig = {    host:'localhost',    user:'diegoug',    password:'12345',    database:'test' }; var runQuery = function(Query,Data,callback){    var connection = mysql.createConnection(dbConfig);    connection.connect(function(err) {       if (err) throw err;    });        connection.query(Query,Data,function(err, res){          if (err) throw err;          if (callback){             callback(res);          }       }    );         connection.end(); }

// module var DB = function(config){    config = config || {}; } DB.prototype.getSingleData = function(data,callback){    var Query = queries.SQLGETSINGLEDATA;    var Data  = [data];    runQuery(Query,Data,function(res){       res = res.pop();       callback(res);    }); } DB.prototype.saveSingleData = function(data){    var Query = queries.SQLSAVESINGLEDATA;    var Data  = data;    runQuery(Query,Data); } module.exports = DB;

--
  Diego Alonso Uribe Gamez

Desarrollador web

Twitter: @DiegoUG

Google+: +DiegoAlonsoUribeGamez



Ricky

unread,
Apr 30, 2015, 12:43:11 PM4/30/15
to node...@googlegroups.com
Muchas gracias por sus aportes, lo hice tal como ustedes me dijeron y ahora sí funciona utilizando el pool de la librería. Ahora tengo un tema relaccionado al testing.. lo posteo en otro hilo.

Javier Viola

unread,
Apr 30, 2015, 12:44:08 PM4/30/15
to node...@googlegroups.com
Me alegra que te haya servido.

Saludos!

--
Reply all
Reply to author
Forward
0 new messages