본문 바로가기
MySql

MySQL 'max_user_connections'리소스를 초과했습니다.

by 베이스 공부 2020. 11. 2.
반응형

MySQL, Express, Angular, NodeJS 애플리케이션이 있고 때때로 로그인 할 때 노드 콘솔에 다음 오류가 발생합니다.

TypeError : 정의되지 않은 'query'속성을 읽을 수 없습니다.

passport.local.js 파일에서 오류가 발생합니다. 다음 줄은 다음과 같습니다.

connection.query('SELECT * FROM users WHERE username LIKE ?', [username], function (err, user) {

이것은 여권 기능입니다

passport.use(new LocalStrategy(
    function(username, password, done) {

        console.log('app.js');

        pool.getConnection(function(err, connection) {

            console.log('err: ' + err);
            console.log(connection);    

            connection.query('SELECT * FROM users WHERE username LIKE ?', [username], function (err, user) {
                if (err) throw err;

                for (var i = user.length - 1; i >= 0; i--) {
                    var current = user[i];
                }

                if(current){
                    if(bcrypt.compareSync(password, current.password)){
                        return done(null, user);
                    } else {
                        return done(null, false);
                    }
                } else {
                    console.log('no user');
                    return done(null, false);
                }
            });

            connection.release();
        });
    }
));

내 파일 상단에 내 이 필요합니다.

var pool = require('../../config/connection');

오류가 발생하면 :

console.log(connection);  

가져옵니다 :

찾으시는 주소가 없습니다

또한 오류를 기록합니다.

console.log('err: ' + err);

쇼 :

 err: Error: ER_USER_LIMIT_REACHED: User 'bfe4a8980ede74' has exceeded the 'max_user_connections' resource (current value: 10)

 

해결 방법

 

표시되는 오류는 문제를 나타내는 것입니다. MySQL 서버는 사용자 당 10 개의 연결 만 허용하며 해당 제한에 도달했습니다.


그 외에도 코드에 또 다른 문제가 있습니다. 쿼리가 완료되기 전에 연결이 해제되어 예기치 않은 동작이 발생할 수 있습니다. connection.release () 에 대한 호출을 콜백 내부로 이동합니다.

pool.getConnection(function(err, connection) {
  ...
  connection.query('SELECT * FROM users WHERE username LIKE ?', [username], function (err, user) {
    connection.release();
    ...
  });
});


마지막으로 비동기 코드로 작업하는 경우 오류를 발생시키지 말고 콜백에 전달하십시오 (그리고 pool.getConnection 이제 로깅 외에) :

pool.getConnection(function(err, connection) {
  if (err) return done(err);
  ...
});

 

참조 페이지 https://stackoverflow.com/questions/39150633

 

 

반응형

댓글