【问题标题】:Error: Connection lost: The server closed the connection node js mysql错误:连接丢失:服务器关闭连接节点js mysql
【发布时间】:2020-02-19 12:14:09
【问题描述】:

我收到此错误。一段时间后。我认为这个错误是因为 MySQL 处于空闲状态。有人建议我防止这个错误。

Error: Connection lost: The server closed the connection.
    at Protocol.end (/var/www/html/invoice/invoice2/node_modules/mysql/lib/protocol/Protocol.js:112:13)
    at Socket.<anonymous> (/var/www/html/invoice/invoice2/node_modules/mysql/lib/Connection.js:94:28)
    at Socket.<anonymous> (/var/www/html/invoice/invoice2/node_modules/mysql/lib/Connection.js:526:10)
    at Socket.emit (events.js:333:22)
    at endReadableNT (_stream_readable.js:1204:12)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)
Emitted 'error' event on Connection instance at:
    at Connection._handleProtocolError (/var/www/html/invoice/invoice2/node_modules/mysql/lib/Connection.js:423:8)
    at Protocol.emit (events.js:321:20)
    at Protocol._delegateError (/var/www/html/invoice/invoice2/node_modules/mysql/lib/protocol/Protocol.js:398:10)
    at Protocol.end (/var/www/html/invoice/invoice2/node_modules/mysql/lib/protocol/Protocol.js:116:8)
    at Socket.<anonymous> (/var/www/html/invoice/invoice2/node_modules/mysql/lib/Connection.js:94:28)
    [... lines matching original stack trace ...]
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  fatal: true,
  code: 'PROTOCOL_CONNECTION_LOST'
}

【问题讨论】:

    标签: mysql node.js


    【解决方案1】:

    您好,当您使用与节点 js 服务器的正常连接连接 mysql 时,一段时间后您的 mysql 客户端将关闭 所以你必须使用 pooling 机制连接到 mysql 服务器。

    请通过这里您可以找到如何使用池连接连接 mysql (https://github.com/mysqljs/mysql#pooling-connections)

    var mysql = require('mysql');
    var pool  = mysql.createPool({
      connectionLimit : 10,
      host            : 'example.org',
      user            : 'bob',
      password        : 'secret',
      database        : 'my_db'
    });
    
    pool.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0].solution);
    });
    

    【讨论】:

      【解决方案2】:

      这是连接协议丢失的解决方案。这个解决方案解决了我

      这里是数据库连接

      const mysql = require('mysql');
      
      const connection=mysql.createConnection({
          host:'localhost',
          user:'root',
          password:'******',
          database:'db_name'
      });
      
      connection.connect(function(error){
          if(!!error) console.log(error);
           else console.log('SQL Database Connected!');
      });
      
      module.exports = connection;`
      

      只需使用 pm2 运行节点服务器,例如: pm2 start app.js

      参考:Install the npm pm2 package

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-28
        • 2013-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-28
        • 2020-01-22
        • 2012-11-07
        相关资源
        最近更新 更多