개발자 환장하는 "ORA-01861: literal does not match format string"

 

개발자가 가장 미치는 상황중 하나는

 

내꺼에선 잘되는데 서버에 올리는 포팅만 하면 안되는 상황일 것이다.

 

그중 대표적인것중 하나가

 

ORA-01861: 리터럴이 형식 문자열과 일치하지 않음 

ORA-01861: literal does not match format string 

 

바로 이 에러...

 

 

toad나 sqlgate 에선 잘만되는게 서버에만 올리면 안되는 미치는 상황이다.

 

일단, 원인은 TO_DATE와 TO_CHAR의 함수에 날짜형식을 지정하지 않았을 때

 

기본값으로 지정되는 형식이 달라서 그렇다.

 

TO_DATE('2014-01-01', 'YYYY-MM-DD') 이런식으로 쓰는데 두번째 인수인 'YYYY-MM-DD'를

 

생략해버리면 환경에 따라 서로 다른값이 지정되므로 최악의 경우

 

TO_DATE('2014-01-01', 'DD-MON-RR')  이런식으로 기본값이 들어가며 실행되는 경우가 생겨서 

 

위와같은 ORA-01861 오류가 생기는 것이다.

 

 

 

물론 최선의 해결책은 TO_DATE와 TO_CHAR를 쓸 때에는 항상 데이터형식을 지정하는 것이지만,

 

개발이라는게 어찌그리 되는가? 분명 어딘가에서는 빼먹기 마련인데,

 

빼먹은것이 서버에 올라갈때까지 발견 안된다는건 너무 위험한 상황이다.

 

 

게다가 저 에러는 뷰 내부나 저장프로시저 내부에서 빼먹어도 에러가 난다!

 

 

한마디로 내 소스 전체에서 TO_DATE나 TO_CHAR로 전체검색 한다고 찾아지는 문제가 아니란 의미.

 

그러므로 서버 환경을 내 로컬환경에도 맞춰서(!!) 서버에서 나는 에러는 나도 나는 상황이

 

더 좋은 개발환경이라고 생각된다.

 

 

 

그러니 한번이라도 서버에 sqlplus로 접속을 해서

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

SELECT * FROM nls_session_parameters WHERE PARAMETER LIKE '%DATE%' OR PARAMETER LIKE '%LANG%'; 

 

이 쿼리를 한번 날려서 서버가 어떤값들이 사용되고 있는지 알아내자.

 

 

 

서버 sqlplus로 접속하기 어렵다면,

 

저쿼리를 실행하는 프로그램을 짜서 서버에 포팅해서 실행해 버리자.

 

아무튼 그런식으로 서버 환경값을 다 알아낸 다음에

 

내 환경도 서버랑 같게 맞춘다.

 

 

 

여기서 주의할것은 NLS_DATE_FORMAT 값 한개만 맞춘다고 되는게 아니라

 

NLS_LANGUAGE, NLS_DATE_LANGUAGE 까지 총 3개 전부 맞춰야 한다. 

 

 

 

일단 토드에서도 서버랑 같은 에러가 나는것이 속편함으로

 

토드 실행 후에 

 

ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN';

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-RR';

ALTER SESSION SET NLS_DATE_LANGUAGE = 'AMERICAN'; 

 

이런식으로 한번 쿼리를 (물론 저 값을은 서버값으로 맞춘다)  날린다음에

 

오류가 나는 쿼리를 실행해보면 서버에서 나던 오류가 내 토드에서도 나는것을 확인할 수 있다.

 

 

 

아에 세션 전체나 접속환경차원에서 저값을 고정시키는 방법도 있지만

 

그 방법은 검색하면 나온다....... 하지만

 

TO_CHAR, TO_DATE의 두번째 인수를 항상 지정하는 버릇을 들이기 위해서라도

 

나는 일부러 고정하지 않고 있다.

 

[출처] https://m.blog.naver.com/jeemin5/220141590502

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86307
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78758
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95507
13 [데이터 수집 및 전처리] 주식 전종목 어떻게 불러올까? 거래소 종목 불러오기 file 졸리운_곰 2023.12.09 1701
12 [데이터 수집 및 전처리] [Python/파이썬]네이버증권API 활용 - 회사명, 종목코드 받아오기 file 졸리운_곰 2023.12.08 1509
11 [데이터 수집 및 전처리] 네이버 금융(차트)에서 주가 갈무리(크롤링)하기 file 졸리운_곰 2023.12.08 1495
10 [데이터 수집 및 전처리] 네이버 증권에서 일봉, 주봉 데이터 가져오기 file 졸리운_곰 2023.12.08 1500
9 [데이터 수집 및 전처리] (놀라운) 한글 데이터 짱! AwesomeKorean_Data file 졸리운_곰 2023.03.07 1198
8 [데이터 수집 및 전처리] Crawling, Scraping file 졸리운_곰 2022.05.21 1476
7 [데이터분석][데이터수집 전처리] MS 엑셀(Excel)에서 UTF-8 로 된 csv 파일 가져오기 file 졸리운_곰 2021.09.30 1415
6 카프카 설치 시 가장 중요한 설정 4가지 졸리운_곰 2021.07.13 1928
5 Prometheus Query(PromQL) 기본 이해하기 file 졸리운_곰 2020.12.17 1414
4 [인프라 모니터링 오픈소스] Prometheus 를 알아보자 file 졸리운_곰 2020.12.17 1907
3 Prometheus + Grafana 대시보드 file 졸리운_곰 2020.12.17 2489
2 Grafana란? file 졸리운_곰 2020.12.17 2159
1 Importing wikipedia dump to MySql 졸리운_곰 2020.10.04 2494
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED