+-

我们有一个node.js应用程序,它使用 node_msyql,一个很棒的小库来访问MySQL数据库.
不幸的是,如果我们的连接未使用8到10个小时,那么下次我们尝试运行查询时,会从服务器返回“No database selected”错误.我们需要在某处添加“USE db”,但我无法弄清楚在哪里.
现在,我觉得连接会变得陈旧,似乎node_mysql正在刷新那些陈旧的连接,但似乎没有办法确保正确的数据库连接.我正在寻找一个.connected()回调或事件,或者让我确保正确使用DB的东西,但到目前为止还没有运气.
有什么建议怎么做?
最佳答案
是的,客户试图重新连接.您可以尝试使用以下代码在重新连接时查询’use db’:
client._connection.on('connect', function() { client.query('use db'); })
这是在node-mysql(‘end’处理程序)中重新连接的地方:
https://github.com/felixge/node-mysql/blob/master/lib/mysql/client.js
var connection = self._connection = new Stream(),
parser = self._parser = new Parser();
connection
.on('error', function(err) {
var connectionError = err.code && err.code.match(/ECONNREFUSED|ENOTFOUND/);
if (connectionError) {
if (cb) {
cb(err);
return;
}
}
self.emit('error', err);
})
.on('data', function(b) {
parser.write(b);
})
.on('end', function() {
if (self.ending) {
self.connected = false;
self.ending = false;
return;
}
if (!self.connected) {
return;
}
self.connected = false;
self._prequeue(connect);
});
connection.connect(self.port, self.host);
点击查看更多相关文章
转载注明原文:node.js / node_mysql – 陈旧连接获取“NO database selected”错误 - 乐贴网