Oracle2012. 6. 21. 12:11

현재 하고 있는 프로젝트를 빠르게 진행하다 보니 시작은 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로 바꿔주니 아주 잘 된다.


이것 때문에 대체 얼마나 많은 시간을 소비한건지..-_-;;

Posted by Z700zZz