【问题标题】:User Limit Reached when connection is requested in pool of mysql database在mysql数据库池中请求连接时达到用户限制
【发布时间】:2014-10-17 11:32:00
【问题描述】:

在节点 js 中,我创建了一个用于数据库连接的池

var pool = mysql.createPool( // use a pool for multiple connections
{
  connectionLimit : 4,
  waitForConnections : true,
  queueLimit : 0,
  host     : hostName,
  user     : userName,
  password : passName,
  database : databaseName
});

建立四个连接后,代码工作正常。 但是在五个连接请求在池中排队等待连接之后,我发出一个连接请求为

pool.getConnection(funtion(err){
  if(err)
    console.log('[error] with connection'+err);
});

然后发生错误--->

[error] with connection Error: ER_USER_LIMIT_REACHED: User 'b1312146aa0cc6' has
exceeded the 'max_user_connections' resource (current value: 4)

【问题讨论】:

  • 任何答案....我也遇到了这个问题
  • 修复方法是,每次我使用连接执行查询时都会建立一个新连接,一旦我执行查询就必须终止/关闭连接
  • 我调用 connection.release() 有时它仍然会遇到障碍,我必须将其从异步调用切换到同步调用以避免多个数据库连接......我认为池会处理这个问题

标签: mysql node.js database-connection pool


【解决方案1】:

试试这个:

var mysql = require('mysql');

var pool = mysql.createPool({
    connectionLimit: 4,
    waitForConnections: true,
    queueLimit: 0,
    host: hostName,
    user: userName,
    password: passName,
    database: databaseName
});

var sql = 'select * from bag where id = ?';
var args = [1]

pool.query(sql, args, function(err, result) {
    console.log('result:', result);
})

pool.query(sql, args, function(err, result) {
    console.log('result:', result);
})

pool.query(sql, args, function(err, result) {
    console.log('result:', result);
})

pool.query(sql, args, function(err, result) {
    console.log('result:', result);
})

pool.query(sql, args, function(err, result) {
    console.log('result:', result);
})

// ...

【讨论】:

  • 谢谢莱兰辛。如果我这样做,所有查询都使用相同的连接并且需要大量时间来产生结果
猜你喜欢
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 2019-08-07
  • 2020-10-25
  • 2016-11-27
相关资源
最近更新 更多