MariaDB Cannot enqueue Query after fatal error.(진행 중)

2022. 3. 17. 18:57BACK END/NODE.JS

Error: Cannot enqueue Query after fatal error.
...
code: 'PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR',
fatal: false
번역 -> 치명적 오류를 찾아내보자 -> 실패
반복적 오류로 에러메시지가 fatal로 뜰 수 있음 -> 반복적 오류를 찾아내보자 -> 실패
활동이 없을 때 커넥션이 만료되어서 그럴 수 있음 -> 도전!

 

MariaDB 설정변수 중 시간 만료 관련된 것 뽑아보자!

 MariaDB [(none)]> show variables like '%timeout';

 

주요 변수 설명 (km0830님 블로그 참조)

connect_timeout : 서버 접속시에 접속실패 메세지를 보내기까지 대기하는 시간
delayed_insert_timeout : insert시 delay될 경우 대기하는 시간
innodb_lock_wait_timeout : innodb에 transaction 처리중 lock이 걸렸을 시 롤백 될때까지 대기하는 시간. innodb는 자동으로 데드락을 검색해서 롤백시킨다
innodb_rollback_on_timeout : innodb의 마지막 구문을 롤백시킬지 결정하는 파라미터. timeout은 진행중인 transaction을 중단하고 전체 transaction을 롤백하는 과정에서 발생한다.
interactive_timeout : 활동중인 커넥션이 닫히기 전까지 서버가 대기하는 시간
net_read_timeout : 서버가 클라이언트로부터 데이터를 읽어들이는 것을 중단하기까지 대기하는 시간
net_write_timeout : 서버가 클라이언트에 데이터를 쓰는 것을 중단하기까지 대기하는 시간
slave_net_timeout : 마스터/슬레이브로 서버가 클라이언트로부터 데이터를 읽어들이는 것을 중단하기까지 대기하는 시간
table_lock_wait_timeout : 테이블 락을 중단하기까지 대기하는 시간
wait_timeout : 활동하지 않는 커넥션을 끊을때까지 서버가 대기하는 시간 

 

 

변경방법

 MariaDB [(none)]> set global wait_timeout = 259200
 MariaDB [(none)]> set session wait_timeout = 259200

72시간에 해당하는 값을 넣어주었으나 위 방법은 컨테이너가 재시작 될 경우 초기화 될 수 있음

 

 

설정파일 직접 수정하기

my.cnf

[mysqld]
wait_timeout = 259200

 

 

 

 

 

 

참조

 

데이터베이스 timeout 설정하기

커넥션 관련 문제가 발생하는 경우가 종종있다. 그 경우 데이터베이스 타임아웃이 많아서 변경해보도록하자  pi@raspberrypi :~ $  sudo mysql -uroot  MariaDB [(none)]> show variables like '%timeout'; +..

km0830.tistory.com

 

'BACK END > NODE.JS' 카테고리의 다른 글

node-cron을 활용한 스케쥴링  (0) 2022.03.17
replace함수로 string타입 데이터 가공  (0) 2022.03.17
cross-env  (0) 2022.03.17
Bcrypt 암호화  (0) 2022.03.17
REST 미지원 메서드 처리  (0) 2022.03.17