programing

sequelize에서 mysql 연결 확인

codeshow 2023. 9. 19. 21:33
반응형

sequelize에서 mysql 연결 확인

Sequelize 인스턴스를 만든 다음 mysql 데이터베이스에서 원시 쿼리를 수행하는 매우 간단한 프로그램이 있습니다.MySql을 실행하면 문제없이 쿼리를 수행할 수 있습니다.그러나 MySql이 실행되지 않는 경우 쿼리 시간 초과에 도달할 때까지 쿼리는 오류를 발생시키지 않고 ETIMEOUT 오류를 발생시킵니다.하지만 그런 일은 일어나지 않습니다.나는 만약 mysql이 실행되고 있지 않다면 쿼리에서 ENOTFOUND 오류 등이 발생하여 Mysql이 다운되었거나 Mysql이 매우 바쁘고 응답 시간이 매우 큰 경우 오류를 관리하고 다른 작업을 수행할 수 있을 것으로 예상합니다.Mysql이 타임아웃 예외를 기다리지 않고 실행되고 있는지 확인하려면 어떻게 해야 합니까?

sequelize = new Sequelize(db_name, db_user, db_pass, opts);

sequelize.query('SELECT * FROM some_table').success(function(result) {
  console.log(result);
}).error(function(err) {
  console.log(err);
});

Sequelize의 최신 버전(즉, Sequelize).3.3.2), 연결을 확인하는 데 사용할 수 있습니다.

var sequelize = new Sequelize("db", "user", "pass");

sequelize.authenticate().then(function(errors) { console.log(errors) });

authenticate단순 운행SELECT 1+1 AS resultdb 연결을 확인하기 위해 쿼리합니다.

업데이트:

최신 API에 의한 오류는 다음에서 처리해야 합니다.catch:

sequelize
  .authenticate()
  .then(() => {
    console.log('Connection has been established successfully.');
  })
  .catch(err => {
    console.error('Unable to connect to the database:', err);
  });

업데이트 2:

이것을 테스트해 본 적은 없지만, 동일한 것에 도달할 수 있는 유일한 논리입니다.async/await:

try {
  await sequelize.authenticate()
} catch (err) {
  console.error('Unable to connect to the database:', err)
}

암호 인증 오류와 같은 오류는 다음에서 볼 수 없습니다..then.

여기에 있는 후속 설명서에서:

이와 같이 .authenticate() 함수를 사용하여 연결을 테스트할 수 있습니다.

sequelize
  .authenticate()
  .then(function(err) {
    console.log('Connection has been established successfully.');
  })
  .catch(function (err) {
    console.log('Unable to connect to the database:', err);
  });

시스템 변수가 사소한 값으로 재설정된 경우 "wait_timeout"을 확인하십시오.

다음 코드를 사용하여 db 엔진이 시작될 때까지 기다립니다.

function sleep(ms) {

    return new Promise(function(resolve) {

        setTimeout(resolve, ms);
    });
}

for (;;) {

    try {

        await db.authenticate();
        break;
    } catch(ex) {

        await sleep(1000);
    }
}

언급URL : https://stackoverflow.com/questions/19429152/check-mysql-connection-in-sequelize

반응형