Как я могу поддерживать постоянное соединение MySQL в NodeJS?

0

Я в настоящее время разрабатываю Discord Bot, для хранения данных я использую MySQL, но через несколько часов соединение умирает. Мне было интересно, есть ли у кого-то ключ к тому, как это сделать. Это способ, которым я в настоящее время подключаюсь:

// Initalise Variables
var config;
var mysql, conn;
var fs;

try {
    // External Packages
    fs = require('fs');
    config = require('./config.json');
    mysql = require('mysql');

    // Connection Setup
    conn = mysql.createConnection({
        host: config.mysql.host,
        user: config.mysql.user,
        password: config.mysql.password,
        database: config.mysql.database
    });
    conn.connect();
} catch (e) {
    console.error(e);
}

2 ответа

0
Лучший ответ

Я думаю, вам нужно установить навсегда и снова запустить службу. Forever - это простой инструмент CLI для обеспечения непрерывного выполнения данного сценария. Как только вы установите навсегда и запустите файл js узла, он будет поддерживать постоянный файл. Использование npm вы можете установить навсегда

npm install forever -g

Затем просто перезапустите js файл

Пример:

forever start app.js

Надежда теперь js служит постоянно, не нарушая соединение.

0

Вы можете попробовать изменить настройку тайм-аута иначе, если по умолчанию будет 10000 мс или 10 секунд.

try {
    // External Packages
    fs = require('fs');
    config = require('./config.json');
    mysql = require('mysql');

    // Connection Setup
    conn = mysql.createConnection({
        host: config.mysql.host,
        user: config.mysql.user,
        password: config.mysql.password,
        database: config.mysql.database,
        connectTimeout: config.mysql.timeout //1000000 some large number 
    });
    conn.connect();
} catch (e) {
    console.error(e);
}

Вероятно, вы должны использовать пул соединений вместо одного соединения с БД (это, похоже, не всегда сохраняет тип настройки, и вам придется дать большой тайм-аут, как указано выше)

    try {
        // External Packages
        fs = require('fs');
        config = require('./config.json');
        mysql = require('mysql');

        // Connection Setup
        conn = mysql.createConnection({
            host: config.mysql.host,
            user: config.mysql.user,
            password: config.mysql.password,
            database: config.mysql.database,
            connectionLimit: 10,
            queueLimit: 20
        });
var pool = mysql.createPool(config);

var queryDB = function(qry, cb) {
    pool.getConnection(function(error, connection) {
        if(error) {
            cb(error, null);
        }
        else {
            connection.query(qry, function (e, rows) {
                connection.destroy();
                cb(e, rows);
            });
        }
    });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню