目前正在使用: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();
});
};
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
创建的内容并且无法重新连接?
答案 0 :(得分:22)
connection.end()都能正常工作。如果在发送COM_QUIT
数据包之前发生致命错误,则会向回调提供err
参数,但无论如何都将终止连接。
同时检查destroy() method。这将导致立即终止底层套接字。
您可以添加错误处理程序。
https://github.com/felixge/node-mysql/blob/master/Readme.md#error-handling
connection.on('error', function() {});
终止后,无法通过设计重新连接现有连接对象。
点击这里。它显示断开后连接回来。
https://github.com/felixge/node-mysql/blob/master/Readme.md#server-disconnects
答案 1 :(得分:3)
我认为正确的方法是在启动时为您的应用获取连接,并在应用关闭时end()
。