Spring. MySql에서 Oracle로 전환시 나타나는 문제점.
현재 하고 있는 프로젝트를 빠르게 진행하다 보니 시작은 MySQL로 시작했다가 중간에는 Oracle로 바꿨다.
JDBC드라이버와 URL등을 다 바꾸고 쿼리 부분도 오라클에 맞게 수정을 해준 다음 해보면 에러가 발생 하였다.
Cannot create PoolableConnectionFactory (ORA-00923: FROM keyword not found where expected
위와 같은 에러.
에러 내용을 보면 알겠지만 FROM절 뒤의 키워드가 잘못됐다? 못찾겠다?
나는 분명 쿼리에 문제가 없고 그 쿼리를 SQL Developer에 넣어 돌려보면 정상적인 값이 나온다.
분명 쿼리에는 문제가 없다.
모든 방법을 다 동원해서 해봤지만 나오는 결과는 똑같았다.
검색을 해보면 쿼리가 잘못 됐다거나 오라클 방화벽 문제거나 리스너가 구동 되지 않은 상태에서 하면 저런 결과가 나온다는 말뿐.
그러다 검색된 결과가..
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}" p:username="${jdbc.username}"
p:password="${jdbc.password}"
p:validationQuery="SELECT 1 FROM DUAL"
p:testOnBorrow="true"
p:testWhileIdle="true"
p:timeBetweenEvictionRunsMillis="6000"
p:removeAbandoned="true"
p:removeAbandonedTimeout="60"/>
database-context.xml의 내용이다.
p:validationQuery="SELECT 1 FROM DUAL" 이게 문제였다.
Oracle이외의 DataBase는 SELECT 1을 쓴다고 한다.
Oracle로 변경을 하면서 저것을 바꿔주지 않으니 났던 에러였다.
SELECT 1이었던 값을 SELECT 1 FROM DUAL로 바꿔주니 아주 잘 된다.
이것 때문에 대체 얼마나 많은 시간을 소비한건지..-_-;;