-
Truncated time values using TIMEDIFF...에러 2020. 7. 11. 01:19
병원 예약 서비스를 만들면서 예약 시간이 다 됐는데도 PENDING(응답 대기중) 상태인 예약의 status 값을 자동으로 REFUSED 상태로 변경해주고, 예약 시간이 지난 ACCEPTED(수락됨) 상태인 예약의 status 값을 TIMEOUT 상태로 변경해주는 MySQL 이벤트 스케줄러를 생성했다.
30분마다 현재 시각과 예약 시간의 시간차가 0 이상인지를 체크하는 식인데, 어느날 잘 동작하던 스케줄러가 갑자기 제대로 동작하지 않았다. 정확히는 예약 시간이 지나도 예약들의 상태 값을 변경하지 않았다.
로그를 확인해보니 스케줄러가 실행될 때마다 truncated time values using TIMEDIFF... 이런 에러가 뜨고 있었다.
timediff() 는 HH:MM:SS 형식의 TIME value를 반환하는데
TIME value의 범위가 '-838:59:59 ~ 838:59:59' 여서 발생한 문제였다.
스케줄러가 예약 테이블을 몽땅 순회하면서 현재 시각보다 838:59:59 시간 이상 뒤인 날짜로 예약된 데이터를 만나 에러를 야기한 것이다!
고로 문제의 데이터를 삭제하고, 프론트단에서 최대 한달 후까지만 예약이 가능하도록 처리해서 문제를 해결하였다!
https://stackoverflow.com/questions/44155224/error-code-1292-truncated-incorrect-time-value
https://forums.mysql.com/read.php?10,183059
SET GLOBAL event_scheduler = ON;
SELECT * FROM information_schema.events;
DROP EVENT update_records;
'에러' 카테고리의 다른 글
TS 파일 컴파일 후 실행 시 절대 경로 인식 못하는 문제 해결 (tsconfig-paths) (0) 2021.07.01 (Mac) Permissions 0644 for 'isclass.pem' are too open. 에러 해결 방법 (0) 2020.06.01 command not found: mysql 해결법 - mysql-client 설치 (0) 2020.02.28 터미널 재부팅 시 source ~/.bash_profile 재실행해야하는 문제 해결법. (0) 2020.02.16 command not found: mysql_secure_installation (0) 2020.01.07