MAC OS 환경에서 Spring framework + ORACLE + mybatis로 프로젝트를 작업할 때 아래와 같은 오류 사항 발생.
Failed to obtain jdbc connection nested exception is java sql sqlexception 로케일을 인식할 수 없습니다.
request processing failed; nested exception is org.mybatis.spring.mybatissystemexception: nested exception is org.apache.ibatis.exceptions.persistenceexception:
전날까지 잘 동작하던 기능이 위와 같은 오류를 내뱉는다.
눈에 들어오는 키워드 "로케일(locale)"을 제쳐두고 바로 확인 가능한 후보 원인을 살펴보았다.
spring jdbc 설정 및 mybatis 설정은 전혀 바뀐것이 없고, 흔히 발생할 수 있는 Mybatis mapper.xml의 namespace 오탈자 혹은 DAO에서 호출하는 쿼리 맵핑의 오탈자 등의 원인을 찾아보았으나 이마저도, 잘 동작하던 기능이라서 문제가 될 만한 경우에서 제외할 수 있다.
주 원인은 MAC 소프트웨어 업데이트를 진행 후에 발생하는 오류였으며, 업데이트 진행 후 로케일이 다른 국가로 지정되는 버그가 있는 것 같다. 매번 업데이트 후에 해당 오류가 발생했으며 이번이 2번째 오류다.
해결방안은 의외로 간단했다.
먼저, 아래의 절차만 똑같이 한 후 오류가 해결됐는지 확인해본다.
시스템 환경설정 -> 언어 및 지역 -> 지역( 다른 국가 선택 후 다시 대한민국으로 설정 )
위와 같은 절차 진행 후, 가급적이면 IDE를 안전하게 종료하고 다시 실행해볼 것을 권장한다.
이 오류를 접했던것은 처음 프로젝트를 진행했을 때 발생했다. 처음 프로젝트를 들어가기 전에 MAC OS는WINDOWS OS와 달리,DBMS로 oracle을 사용하려면 docker를 이용해oracle container를 만들고 설정하는 작업이 선행되야했으며 이후에 spring framework의 모든 세팅을 끝낸 후 Database가 변경되어 동작하는 insert, update, delete 쿼리를 실행할 때, 접했었던 오류사항이었던 것을 잊고 있었다.
가끔 잊을만하면 발생하는 오류로 기록하지 않거나 기억하지 않으면 해결상황을 찾느라 긴 시간을 보낼 수 있을만한 오류다.
Reference