Javascript 何时使用节点MySQL关闭MySQL连接?

Javascript 何时使用节点MySQL关闭MySQL连接?,javascript,mysql,node.js,Javascript,Mysql,Node.js,目前正在使用: 我有以下代码: var connection = mysql.createConnection({ host : 'localhost', user : 'me', password : 'secret', database : 'Database1' }); app.put('/api/upload', function(req, res, next) { connection.connect(); doMulti

目前正在使用:

我有以下代码:

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();
    });          
};
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)
我应该让连接保持打开状态直到服务器死机吗

更新: 当我将
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();
    });          
};
它很好用。这是否意味着
connection.end()
关闭创建的
mysql.createConnection
并且无法重新连接?

不管发生什么致命错误,它都能正常工作。如果在发送
COM\u QUIT
数据包之前发生致命错误,则会向回调提供一个
err
参数,但无论如何连接都会终止

也检查一下。这将导致基础套接字立即终止

您可以添加错误处理程序


一旦终止,现有连接对象将无法通过设计重新连接

在这里检查。它显示断开连接后重新连接


我认为正确的方法是在启动时为应用程序建立连接,然后在应用程序关闭时将其连接。

谢谢您的回答,但这对我没有多大帮助。我确实有connection.on error的代码,它显示了上面显示的错误。end()正确地关闭了连接,但是当我尝试重新连接连接时,它没有连接。我不是GitHub用户,所以也许你(某人)可以很容易地告诉那些人,只需在“connection.on”中传递的函数末尾添加一个右大括号。感谢可能没有效率,因为在复杂查询过程中一个连接可能会暂停。如果您需要长时间的查询,请使用连接池(这是池背后的想法,即已经有一个连接,可以使用),或者确保您的查询已正确优化。节点mysql还可以让您处理断开连接和其他错误。长查询是什么意思?超过10个联接?@G4BB3R long query=>耗时较长(例如,耗时>100ms)
// I am Chuck Norris:
connection.on('error', function() {});