에러코드 그대로 연결이 timeout 되었다는 말인데,
이 에러는 주로 서버와 연결을 시도할 때 제한시간 안에 연결이 진행되지 않으면 나오는 에러다.
1. 서버의 정보를 잘못 기입한 경우
대부분은 이 경우에 해당할 것이다. DB와 연결하는 경우 host, name, password, port number 같은 정보를 잘못 입력하면 해당 서버와 연결이 되지 않기 때문에 ETIMEDOUT 에러가 생길 수 있다. 이 경우에는 간단히 본인이 입력한 정보를 다시 확인함으로써 에러를 해결할 수 있다. MySQL 같은 경우 3306번 포트와 연결을 시도했는지 확인해주는 것이 좋다.
추가적으로 연결하려는 서버가 방화벽에 의해 블락이 되는 경우도 에러가 나오기 때문에 이 경우도 확인해주는 것이 좋다.
2. 권한이 없는 경우
만일 내가 서버의 정보를 제대로 기입하였더라도 그 서버에 접근할 권한이 존재하지 않으면 애플리케이션과 서버가 연결될 수 없다. 나 같은 경우도 이 케이스였는데 주소는 제대로 입력했지만 원격 DB에서 내 IP에 권한을 부여해주지 않았기 때문에 서버에 연결할 수 없었다.
이런 경우는 서버에서 내 IP를 허용하였는지 혹은 내 계정이 내가 수행하고 싶은 작업의 권한을 가지고 있는지 확인해보면 된다.
3. 요청 시간이 부족한 경우
보통의 경우 기본으로 세팅된 제한시간 안에 거의 모든 연결이 이루어지지만 가끔 그 이외의 시간을 필요로 할 때도 있다. 그런 경우 애플리케이션 자체에서 제한시간을 유동적으로 설정할 수 있는데 Sequelize 같은 경우는 아래와 같이 수정할 수 있다.
const sequelize = new Sequelize(database, username, password, {
host: "host",
user: "user",
password: "password",
dialect: "mysql",
dialectOptions: {
options: {
requestTimeout: 3000
}
}
});
Sequelize 객체를 생성할 때 dialectOptions의 requestTimeout 옵션을 통해서 sequelize 자체의 timeout 시간을 다르게 설정할 수 있다.
'Web' 카테고리의 다른 글
[ javascript ] encodeURI(), encodeURIComponent() 차이 (0) | 2022.08.02 |
---|---|
알면 좋은 Git 명령어 [rebase, amend, cherry pick, reset, revert stash] (0) | 2022.06.30 |
동기와 비동기 처리 방식 (Asynchronous processing model) (5) | 2022.05.23 |
[Error] MySQL ERROR 1045 (28000) (0) | 2022.05.19 |
[ MySQL ] Sequelize 조회수 증가 / 감소 기능 구현하기 (0) | 2022.05.19 |