const dotenv = require('dotenv'); dotenv.config({ path: `${process.cwd()}/.env` }); const path = require('path') function mysql_conn(config) { // Ubicua Plataform - MYSQL Module try { var mysql_npm = require('mysql'); } catch (err) { console.log("Cannot find `mysql` module. Is it installed ? Try `npm install mysql` or `npm install`."); } var db_config = { host: config.DB_HOST, user: config.DB_USER, password: config.DB_PASS, database: config.DB, charset: 'utf8mb4_general_ci', port: config.DB_PORT }; //- //- Create the connection variable //- var connection = mysql_npm.createPool(db_config); //- //- Establish a new connection //- connection.getConnection(function (err) { if (err) { // mysqlErrorHandling(connection, err); console.log("\n\t *** Cannot establish a connection with the database. ***"); connection = reconnect(connection); } else { console.log("\n\t *** New connection established with the database. ***") } }); //- //- Reconnection function //- function reconnect(connection) { console.log("\n New connection tentative..."); //- Create a new one connection = mysql_npm.createPool(db_config); //- Try to reconnect connection.getConnection(function (err) { if (err) { //- Try to connect every 2 seconds. setTimeout(reconnect(connection), 2000); } else { console.log("\n\t *** New connection established with the database. ***") return connection; } }); } //- //- Error listener //- connection.on('error', function (err) { //- //- The server close the connection. //- if (err.code === "PROTOCOL_CONNECTION_LOST") { console.log("/!\\ Cannot establish a connection with the database. /!\\ (" + err.code + ")"); return reconnect(connection); } else if (err.code === "PROTOCOL_ENQUEUE_AFTER_QUIT") { console.log("/!\\ Cannot establish a connection with the database. /!\\ (" + err.code + ")"); return reconnect(connection); } else if (err.code === "PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR") { console.log("/!\\ Cannot establish a connection with the database. /!\\ (" + err.code + ")"); return reconnect(connection); } else if (err.code === "PROTOCOL_ENQUEUE_HANDSHAKE_TWICE") { console.log("/!\\ Cannot establish a connection with the database. /!\\ (" + err.code + ")"); } else { console.log("/!\\ Cannot establish a connection with the database. /!\\ (" + err.code + ")"); return reconnect(connection); } }); return connection } //- //- Export //- module.exports = mysql_conn;