본문 바로가기

노력을 이기는 재능은 없고
노력을 외면하는 결과도 없다.
- 이창호 9단

E R R O R/Java Error

[Java Error] Cause: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory, ORA-00923: FROM keyword not found where expected.

  Junesker   2022. 8. 4.
반응형

ORA-00923: FROM keyword not found where expected

테스트 프로젝트로 사용하던 서비스를 수정하기 위해서 오랜만에 프로젝트를 열고 Mysql 데이터베이스로 사용하던 설정들을 Oracle 데이터베이스 설정으로 변경 후, 서버를 가동하고 로그인을 진행했다. 그런데, ORA-00923: From keyword not found where expected. 라는 에러가 발생했다. From절과 관련이 있는거 같아 DB 쿼리가 있는 Mapper쪽으로 가 로그인을 관장하는 Mapper xml을 들여다보았다. 쿼리에 Mysql에서 사용중이던 구문이 있어 수정하고, 오타 또한 확인했지만 오타는 없었다. 다시 서버를 재가동하고 로그인을 진행했다. 하지만 같은 에러가 뿜어져나왔다. 설정이 잘못된건가? 어디서부터 잘못된건지 하나하나씩 찾아나갔다. 한참을 헤매고 시도하다가 마지막에 도움의 손길을 빌려 해결할 수 있었다. 문제는 이랬다. DataSource bean을 등록하는 과정에서 속성으로 ValidationQuery를 설정하는 부분이 있는데, 여기서 전에 Mysql 데이터베이스로 사용하면서 설정해두었던 값이 문제가 됐다.

 

 

 

 

 

처리 결과
datasource-context.xml에서 등록한 DataSource bean등록시에 설정한
ValidationQuery의 설정값이 잘못되어 발생하여 설정값을 변경

 

 

 

 

 

dataSource bean등록시에 설정한 validationQuery 설정값을 변경

validationQuery설정부를 삭제하거나, 삭제하지 않고 사용한다면 데이터베이스 Oracle 설정에서 사용가능 한 "select 1 from dual"의 값으로 대체하여 설정합니다. Mysql같은 경우는 FROM절 생략이 가능하지만, Oracle에서는 그렇지 못하기 때문에 validationQuery에 설정되어 있는 select 1 값이 From절 누락으로 체킹하는 부분이 되었다. 그래서 Mapper에 설정되어 있는 쿼리 xml들의 문제가 있다고 판단하여 에러를 뿜었다.

반응형

댓글