Menu

메모용 개발 블로그

전체보기 > 데이터베이스 > Oracle >

Oracle ORA-06512 varchar2에서 date 묵시적 형변환에 의한 오류사례

2022-06-15 01:07:54

이번에 발생한 오류 사례와 원인에 대해서 간략하게 공부하여 메모해두는 글 입니다.

오류 내용

다른 개발자의 INSERT 쿼리에서 오류가 발생하여 로그를 확인한 결과 아래와 같은 오류가 발생

ORA-01861: literal does not match format string

해결

date 타입의 컬럼에 varchar2 타입의 데이터를 넣은 간단한 문제이므로 date타입으로 변경하여 해결

특이사항

로그에 찍힌 쿼리를 DB 클라이언트(Datagrip)에서 쿼리하거나 로컬에서 빌드&실행한 서버에서는 쿼리 오류 없이 정상 동작하나 운영&개발 환경에서 오류가 발생함.

특이사항의 원인

클라이언트의 언어 설정에 따라 varchar-date간의 묵시적 형변환 시 설정된 날짜 포맷값이 달라 각 환경에 따라 다른 결과가 발생함.

로컬 환경은 한국의 포맷값이므로 묵시적 형변환이 정상으로 되어 값이 INSERT 되었으며, 배포 환경에서는 타 언어로 설정되어 오류가 발생한 것.

결론

로컬과 배포 시 환경을 통일 시키면 문제가 발생하지 않겠으나, 묵시적인 date 타입 형변환을 지양하고 명시적으로 형변환을 시켜주는 것이 바람직하다고 생각됨