- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
ORACLE 개발자 환장하는 "ORA-01861: literal does not match format string"
2020.03.12 16:41
개발자 환장하는 "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로 접속을 해서
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
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 오라클 기본 샘플 데이터베이스 | 졸리운_곰 | 2014.01.02 | 86307 |
| 공지 | [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE | 가을의 곰을... | 2013.02.10 | 78758 |
| 공지 | [G_SQL] Sample Database | 가을의 곰을... | 2012.05.20 | 95507 |
| 13 |
[데이터 수집 및 전처리] 주식 전종목 어떻게 불러올까? 거래소 종목 불러오기
| 졸리운_곰 | 2023.12.09 | 1701 |
| 12 |
[데이터 수집 및 전처리] [Python/파이썬]네이버증권API 활용 - 회사명, 종목코드 받아오기
| 졸리운_곰 | 2023.12.08 | 1509 |
| 11 |
[데이터 수집 및 전처리] 네이버 금융(차트)에서 주가 갈무리(크롤링)하기
| 졸리운_곰 | 2023.12.08 | 1495 |
| 10 |
[데이터 수집 및 전처리] 네이버 증권에서 일봉, 주봉 데이터 가져오기
| 졸리운_곰 | 2023.12.08 | 1500 |
| 9 |
[데이터 수집 및 전처리] (놀라운) 한글 데이터 짱! AwesomeKorean_Data
| 졸리운_곰 | 2023.03.07 | 1198 |
| 8 |
[데이터 수집 및 전처리] Crawling, Scraping
| 졸리운_곰 | 2022.05.21 | 1476 |
| 7 |
[데이터분석][데이터수집 전처리] MS 엑셀(Excel)에서 UTF-8 로 된 csv 파일 가져오기
| 졸리운_곰 | 2021.09.30 | 1415 |
| 6 | 카프카 설치 시 가장 중요한 설정 4가지 | 졸리운_곰 | 2021.07.13 | 1928 |
| 5 |
Prometheus Query(PromQL) 기본 이해하기
| 졸리운_곰 | 2020.12.17 | 1414 |
| 4 |
[인프라 모니터링 오픈소스] Prometheus 를 알아보자
| 졸리운_곰 | 2020.12.17 | 1907 |
| 3 |
Prometheus + Grafana 대시보드
| 졸리운_곰 | 2020.12.17 | 2489 |
| 2 |
Grafana란?
| 졸리운_곰 | 2020.12.17 | 2159 |
| 1 | Importing wikipedia dump to MySql | 졸리운_곰 | 2020.10.04 | 2494 |

