Javascript 如何在NodeJS中保持恒定的MySQL连接

Javascript 如何在NodeJS中保持恒定的MySQL连接,javascript,mysql,node.js,Javascript,Mysql,Node.js,我目前正在开发Discord Bot,用于存储数据,我正在使用MySQL,但几个小时后,断开连接就会消失。我想知道是否有人知道怎么做。这是我当前连接的方式: // Initalise Variables var config; var mysql, conn; var fs; try { // External Packages fs = require('fs'); config = require('./config.json'); mysql = requ

我目前正在开发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);
}

如果默认设置为10000ms或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);
}
您可能应该使用一个连接池,而不是一个DB连接—这似乎不是始终保持活动的设置类型,您必须像上面那样给出一个大的超时

    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);
            });
        }
    });

我认为您需要永远安装并重新启动服务。Forever是一个简单的CLI工具,用于确保给定脚本连续运行。一旦您永久安装并运行NodeJS文件,它将使该文件持续保持活动状态。使用npm,您可以永远安装

npm install forever -g
然后重新启动js文件

例:

希望现在js能在不中断连接的情况下继续提供服务。

可能会重复
forever start app.js