Backgroud
업무 중에 로컬 환경에서는 문제없이 API가 동작하지만, 개발 환경(NCP)에서는 프로시저 실행 중 Oracle 에러가 발생하는 이슈가 발생했습니다.
발새한 에러는 ORA-01861: literal does not match format string였고,
문자열 형태로 받은 날짜 데이터 (ex. '2024-07-01')를 TO_DATE 메서드 없이 자동으로 날짜 타입으로 변경될 것을 예상하고 사용한 프로시저에서 에러가 발생하고 있었습니다.
두 환경은 같은 Oracle DB를 사용하고 있기 때문에, 왜 특정 환경에서만 에러가 발생하는지 찾아봤습니다.
해결 방법
원인은 톰캣 로케일 이슈였습니다. 톰캣 언어 설정이 영어로 되어 있어 '2024-07-01' 이런 문자열 형태의 날짜 데이터를 자동으로 변환하지 못했습니다. 이에 톰캣 언어 설정을 추가했습니다.
1. tomcat.service 파일에 -Duser.language=ko -Duser.region=KR 추가하기
sudo nano /etc/systemd/system/tomcat.service
2. 재시작
sudo systemctl daemon-reload // 시스템 데몬 다시 로드
sudo systemctl restart tomcat // tomcat 재시작