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() {});