+-
node.js / node_mysql – 陈旧连接获取“NO database selected”错误
我们有一个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”错误 - 乐贴网