728x90
1. 오라클 에러 ORA-01861 발생
디비툴에서 잘 작동하는 평범한 오라클 sql 업데이트문. 서버에 올리면 발생한다. 최근 신규 was로 옮기고 나서 아래와 같은 리터럴 에러가 종종 발생하고 있다.
ORA-01861: literal does not match format string
--- Check the CustomDAO.updateCustomerInfo2-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: java.sql.SQLDataException: ORA-01861: literal does not match format string
2. 원인
리터럴 타입이 맞지 않아 발생한 오라클 구문 에러이다. 특히 TO_DATE나 TO_CHAR 날짜 타입을 지정하지 않았을 때 기본으로 지정하는 형식이 달라서 발생한다.
-- 인자를 정확하게 넣은 경우
SELECT TO_DATE('2024.08.22', 'YYYY.MM.DD') FROM DUAL
-- 2번째 인자인 'YYYY.MM.DD' 형식을 생략한 경우 ORA-01861 에러 발생!!
SELECT TO_DATE('2024.08.22') FROM DUAL
3. 해결방법
1) TO_DATE 함수를 사용할 때는 날짜 타입을 정확하게 지정해준다.
2) nls_session_parameters 테이블을 조회하여 서버에 설정한 NLS 세팅을 점검한다.
SELECT * FROM nls_session_parameters WHERE PARAMETER LIKE '%DATE%' OR PARAMETER LIKE '%LANG%';
이때 NLS_DATE_FORMAT, NLS_LANGUAGE, NLS_DATE_LANGUAGE 모두 로컬 환경과 동일하게 맞추어야 한다.
참고!!! 세션이나 접속환경에서 해당하는 값을 설정하는 방법은 다음 포스팅에서...
'Error' 카테고리의 다른 글
[오라클Error] ORA-01652: 128(으)로 테이블 공간 TEMP에서 임시 세그먼트를 확장할 수 없습니다 (0) | 2024.09.30 |
---|---|
log4j2 로그 물음표, 한글 깨짐 문제 해결 방법(charset 설정) (0) | 2024.08.27 |
[오라클 Error] ORA-28545: 에이전트에 접속할 때 Net8에 의해 진단된 오류 (0) | 2024.08.21 |
[오라클 Error] ORA-01861: literal does not match format string (0) | 2024.07.26 |
[자바 Error] Address already in use: JVM_Bind (0) | 2024.06.28 |