본문 바로가기

IT관련

오라클 에러 정보 (ORA-00917, ORA-01756) - 캐릭터셋이 잘못된 경우 발생하는

DB 캐릭터셋과 OS환경 파라메타가 다른 경우 아래와 같이 ORA-00917 또는 ORA-01756 같은 에러를 만나게 됩니다.

missing comma ?  콤마를 내가 잘못 찍었나?? 아무리 눈을 부라리고 다시 봐도 틀린데는 없죠~

가끔 싱글따옴표(') 대신에 더블따옴표(")를 썼어야 했나? 라고 생각하는 경우도 있지만 ㅎㅎ 전혀 아닙니다.

 

문제는 OS 환경변수에 세팅되어 있는 DB 캐릭터셋~

환경변수 NLS_LANG 값이 KO16MSWIN949 로 되어 되어있네요.

앞의 AMERICAN_AMERICA 는 중요하지 않습니다.

 

DB에서 사용하는 캐릭터셋을 보면, 

AL32UTF8 로 되어 있네요.

OS환경변수 NLS_LANG 을 똑같이 맞춰줍니다.

이젠, 에러없이 잘 수행되는 것을 확인할 수 있습니다.

 

export NLS_LANG=KOREAN_KOREA.AL32UTF8 와 같이 앞부분은 KOREAN_KOREA 로 잡아도 됩니다.

이 부분은 사용자한테 보여지는 메시지를 한글로 보여주는 것일뿐, 에러를 유발하거나 하지는 않습니다.

 

그리고, 당연한 얘기이지만, 한글의 경우만 에러가 납니다.

where PRODUCT_GUBUN = 'clothes'; 와 같이 영어만 사용하는 경우에는 에러가 나지 않습니다.