何时使用node-mysql关闭MySQL连接?

nin*_*eer 28 javascript mysql node.js

目前使用:https://github.com/felixge/node-mysql

我有以下代码:

var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'me',
    password : 'secret',
    database : 'Database1'
});
app.put('/api/upload', function(req, res, next)
{
    connection.connect();
    doMultipleQueries(function(err)
    {
        connection.end();
    });          
};
Run Code Online (Sandbox Code Playgroud)

put请求完全正常,但第二次调用它,我得到以下错误

events.js:68
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: Cannot enqueue Handshake after invoking quit.
    at Protocol._validateEnqueue (/Users/anon/Desktop/project Web/node_modules/mysql/lib/protocol/Protocol.js:110:16)
Run Code Online (Sandbox Code Playgroud)

我应该打开连接,直到服务器死掉?

更新:当我mysql.createConnection进入put请求函数时,如下所示:

var connection = null; 
app.put('/api/upload', function(req, res, next)
{
    connection = mysql.createConnection({
        host     : 'localhost',
        user     : 'me',
        password : 'secret',
        database : 'Database1'
    });
    connection.connect();
    doMultipleQueries(function(err)
    {
        connection.end();
    });          
};
Run Code Online (Sandbox Code Playgroud)

它工作正常.这是否意味着connection.end()关闭mysql.createConnection创建和无法重新连接的内容?

met*_*766 26

connection.end()无论致命错误都能正常工作.如果COM_QUIT在发送数据包之前发生致命错误,则会err向回调提供参数,但无论如何都将终止连接.

还要检查destroy()方法.这将导致立即终止底层套接字.

您可以添加错误处理程序.

https://github.com/felixge/node-mysql/blob/master/Readme.md#error-handling

connection.on('error', function() {});
Run Code Online (Sandbox Code Playgroud)

终止后,无法通过设计重新连接现有连接对象.

点击这里 它显示断开后连接回来.

https://github.com/felixge/node-mysql/blob/master/Readme.md#server-disconnects