Node.js在没有任何操作的情况下由mysql自动崩溃

时间:2014-08-18 08:14:00

标签: php mysql node.js socket.io

我正在使用node.js并面临节点崩溃的问题。错误信息如下所示。

Error: Connection lost: The server closed the connection.
   at Protocol.end (/var/www/versions/project/js/node_modules/mysql/lib/protocol/Protocol.js:78:13)
   at Socket.<anonymous> (/var/www/versions/project/js/node_modules/mysql/lib/Connection.js:81:28)
   at Socket.EventEmitter.emit (events.js:117:20)
   at _stream_readable.js:919:16
   at process._tickCallback (node.js:419:13)

我在节点服务器中使用mysql查询。但是在崩溃时它没有任何操作...节点会自动崩溃不同的时间段。

2 个答案:

答案 0 :(得分:1)

这是来自nodejs mysql的错误。 &#34;连接丢失,服务器关闭连接&#34;。 mysql服务器已关闭创建的连接。

我无法确定您使用mysql连接的方式,但您没有提供示例代码段。

解决此问题的一种方法是在服务器关闭旧连接时重新创建新连接,提供示例代码

    connection.on('error', function(error) {
        if(erroor.code === 'PROTOCOL_CONNECTION_LOST') { 
          //re create the connection here again
          connection = mysql.createConnection(config);
        } else {                                      
          throw err;                                  
        }
      });
    }

答案 1 :(得分:1)

我发现只有在需要时才使用连接池来获取连接是最好的方法。

// do this once
var pool = mysql.createPool( opts );

// then, just before you need a connection do this
pool.getConnection(function(err, connection) {
    if (err) throw err;

    // use the connection

    // don't forget to release the connection when you are done...
    connection.release();
});