Browse Source

Add mysql connection reconnect when timeout and lost connection

HonorLee 6 years ago
parent
commit
49cf2bdb2e
2 changed files with 12 additions and 1 deletions
  1. 3 1
      system/core.js
  2. 9 0
      system/lib/extra/mysql-pool.js

+ 3 - 1
system/core.js

@@ -68,7 +68,9 @@ if(Config && Config.mysql_on && Config.mysql_cfg){
     
     // global.MysqlPool  = require(Core.Path.ExtraLib + '/mysql-pool.js').instance(mysqlConfig);
     // global.MysqlDB    = require(Core.Path.Helper + '/mysqldb.js');
-    MysqlPool.getConnection(Core.Setting.mysql_pool.name).query('SELECT VERSION() as version',function(err,result,fields){
+    let testMysqlCon = MysqlPool.getConnection(Core.Setting.mysql_pool.name);
+    testMysqlCon.query('SELECT VERSION() as version',function(err,result,fields){
+        MysqlPool.freeConnection(Core.Setting.mysql_pool.name,testMysqlCon);
         if(err){
             LOGGER.error('Mysql Connect error,please recheck your config');
             LOGGER.error(err);

+ 9 - 0
system/lib/extra/mysql-pool.js

@@ -9,6 +9,15 @@ var pool = function(config){
 
     this.newConnection = function(){
         var con = Mysql.createConnection(config.db);
+        con.on('error', function(err) {
+            if(err.code === 'PROTOCOL_CONNECTION_LOST') {
+                console.log('Connection reconnect!')
+                con = Mysql.createConnection(config.db)
+            }else{
+                console.log('MYSQL on error:')
+                console.log(err);
+            }
+        });
         return con;
     };
     this.getConnection = function(){