저번주금요일, 퇴근직전 분명 개발서버에선 잘만 조회되는 쿼리가 운영서버에서는 조회되지 않았다...
운영서버로그를 볼 수 없어서 너무답답했는데,
오늘 새로운 마음으로 천천히 조회되는 쿼리부터 한자한자 입력해보며 비교해보고 이유를 알아내버렸다..... 울뻔 😪
---------------------------------------------------복사해온글 입니다 ↓----------------------------------------------------------------
[문제]
같은 소스인데도 불구하고 테스트계에서는 에러가 발생하지 않았지만 운영계에서 ORA-01861 에러가 발생했다.
에러로그는 --> (literal does not match format string)
[이유]
OS의 LANG 설정이 달라서 문자열을 묵시적으로 날짜로 변환을 못해서 발생하는 에러라고 한다.
(리눅스 문자셋(캐릭터셋))
보통 서버를 교체하고 나서 LANG에 관련된 설정을 하지 않거나
비교하는 대상의 두 서버의 LANG설정이 다르면 발생한다.
내경우에는 테스트계는 기존에 사용하던 서버였고, 운영계는 이번에 신설된 서버였다.
LANG설정이 누락된 듯 싶어서
테스트계와 운영계의 LANG설정을 각각 확인해보았다.
리눅스 명령어
echo @LANG
locale
[해결방법]
서버의 LANG설정을 에러가 나지 않는 환경의 설정으로 동일하게 맞춤
에러가 나는 쿼리에 분명히 to_date나 to_char함수의 사용이 있을 거고
분명 to_date(#start_date#)이런 식으로 날짜 형식에 대한 정의가 빠져있을 것이다.
따라서, to_date, to_char 사용한 부분들을 찾아 명시적으로 프로그래밍을 해주면 해결된다.
ex) to_date(#start_date#) >>>>>> to_date(#start_date#), 'YYYYMMDD')
https://mamoruoppa.tistory.com/106
[oracle] 오라클 to_char to_date locale 문제(literal does not match format string ora-01861) 리눅스 캐릭터셋 변경
mariadb만 사용하다가 오라클을 사용하니 이런 경우가 발생해서 시간을 엄청 소비했음.. mariadb는 format을 잘 변경해주는데 오라클은 엄격해서 서운했음.. 아무튼 아래 내용대로 형식을 넣어서 해봤
mamoruoppa.tistory.com
'ORACLE > ORACLE함수' 카테고리의 다른 글
Excel을 이용해서 쿼리 만들기 (0) | 2022.12.27 |
---|---|
[ORACLE _ ORDER BY절 안의 CASE문] (0) | 2022.09.15 |
[ORACLE 함수 (LISTAGG) 집계함수 : 여러행을 한행에 보여주기] (2) | 2022.09.13 |
[ORACLE 함수 (INSTR) 문자위치 찾기] (2) | 2022.09.13 |