节点MYSQL连接丢失:服务器关闭了连接

Posted

技术标签:

【中文标题】节点MYSQL连接丢失:服务器关闭了连接【英文标题】:Node MYSQL Connection lost: The server closed the connection 【发布时间】:2020-09-28 03:26:07 【问题描述】:

我正在为与 mysql 连接的 discord 创建一个机器人。到目前为止,它工作正常,但是在更改了我托管 mysql 服务器的服务器之后(它总是远程的),它开始给出这个错误:

错误:连接丢失:服务器关闭了连接。

我运行查询并创建与服务器的连接的代码是这样的:

  const connection = mysql.createConnection(
    host: config.host,
    user: config.dbUser,
    password: config.dbPassword,
    database: config.database
  );

  connection.connect(function(err) 
    if (err) 
      console.error("[MYSQL] Error: " + err.stack);
      return;
    

    console.log("[MYSQL] Connected with ID " + connection.threadId + "!");
  );

  function query(sql) 
    return new Promise(resolve => 
      connection.query(sql, function(error, result, fields) 
        if (error) return error;
        const analise = JSON.stringify(result[0]);
        const final = JSON.parse(analise);
        resolve(final);
      );
    );
  

  exports.connection = connection;
  exports.query = query;

有人可以帮我吗?

【问题讨论】:

【参考方案1】:
const mysql = require('mysql2');

const myDB = mysql.createPool(
  host: process.env.MYSQL_HOST,
  user: process.env.MYSQL_USER,
  password: process.env.MYSQL_PASSWORD,
  port: process.env.MYSQL_PORT,
  database: process.env.MYSQL_DB_NAME,
);

const queryConstructor = pool => (query, args = []) =>
  new Promise((resolve, reject) => 
    pool.getConnection((err, connection) => 
      if (err) 
        return reject(err);
      
      connection.query(query, args, (err, results) => 
        connection.release();
        if (err) 
          return reject(err);
        
        resolve(results);
      );
    );
  );

const query = queryConstructor(myDB);

query('SELECT 1 + 1')
  .then(console.log)
  .catch(console.error);

module.exports = query;

【讨论】:

以上是关于节点MYSQL连接丢失:服务器关闭了连接的主要内容,如果未能解决你的问题,请参考以下文章

在查询异常期间丢失与 MySQL 服务器的连接

重现 MySQL 错误:服务器关闭连接(node.js)

Socket.io mysql连接错误

使用 c3p0 连接池丢失 MySQL 连接

mysql连接丢失错误nodejs

PHP XAMPP日志解释-服务器关闭/浏览器连接丢失