본문 바로가기
IT/Oracle

서버에서만 발생하는 오라클 Literal 오류

by heavenLake 2024. 7. 15.
반응형

 

literal does not match format string

 

문자와 데이트형식을 비교 및 대입했을 때 발생한다. 

 

TO_CHAR TO_DATE를 이용해서 서로 같은 형식으로 비교 및 대입해주면 된다.

함수 두번째 인자 값을 생략하지 말고 꼭 기입해준다. ex> to_char(sysdate , 'yyyymmdd')

 

이렇게 개발 하지 않으면 로컬에서는 오류없이 실행되던게 서버에서는 오류가 날수도있다.

지금 내피시에서 오류가 안난다고 약식으로 자동 형변환을 유도하는건 좋지 않다.

그래서 개발시 꼭 습관화를하는게 좋다.

 

리터럴 오류는

OS의 LANG 설정이 달라서 문자열을 묵시적으로 날짜로 변환을 못해서 발생하는 에러기때문에

 

- 리눅스 명령어

echo @LANG

locale

 

- 윈도우 같은경우 설정에서 확인 가능하다.

 

리터럴 오류가 나면 

보통 쉽게 찾을수 있지만 원인이 쿼리에서 사용하는 뷰나 펑션에서 나는 경우 찾는게 어려울수도 있다.

쿼리 자체에서 못찼겠으면 뷰나 펑션 호출시 나는건 아닌지 살펴봐야한다.

 

아니면 DB툴의 LANG을 변경해주고 테스트 해보면 된다.

DBeaver같은 경우 밑에와 같이 언어를 변경 후 실행해보면 리터럴에러가 안나던게 서버와 똑같이 에러를 나게할수있다.

 

 

1. 윈도우 -> 설정 클릭

 

 

2. User Interface 클릭 

 

 

 

3. Language 한국어를 -> English로 변경 -> 적용 

  • 아래와 같이 에러 발생한 경우 4번 실행

 

 

 

4. DBeaver 종료 후 관리자모드로 DBeaver 실행 -> 1,2,3번 차례대로 실행

 

 

 

5. 언어 변경할려면 재시작이 필요하므로 [예] 버튼 클릭

6. 영어로 변경 된 DBeaver(디비버) 확인

 

 

 

언어설정 출처: https://javaoop.tistory.com/90 [개쿠:티스토리]

반응형

댓글