DB : sybase
Caused by: com.sybase.jdbc3.jdbc.SybSQLException: A wrong datastream has been sent to the server. The server was expecting token 32 but got the token 33. This is an internal error.
해당 쿼리를 실행시키기 위해 주어지는 paramaterClass(혹은 파라메터)에 null값이 없는지 확인해보기 바란다.

 
테스트케이스 클래스에 @Trasactional 을 선언하여 트랜잭션을 자동으로 복구하려고 하는데
iBatis에 의해서 실행되는 프로시저 내부에 트랜잭션Trasaction이 걸려 있는 경우, 
 org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [ZZZZZ]; error code [7713];   
--- The error occurred in .....xml.  
--- The error occurred while applying a parameter map.  
--- Check the ...-InlineParameterMap.  
--- Check the statement (query failed).  
--- Cause: com.sybase.jdbc3.jdbc.SybSQLException: Stored procedure 'honeymon...runTransactionInProcedure' may be run only in unchained transaction mode. The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode.
; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in .....xml.  
--- The error occurred while applying a parameter map.  
--- Check the ...-InlineParameterMap.  
--- Check the statement (query failed).  
--- Cause: com.sybase.jdbc3.jdbc.SybSQLException: Stored procedure 'honeymon...runTransactionInProcedure' may be run only in unchained transaction mode. The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode.
위와 같은 메시지가 나온다. trasaction mode를 사용해야 한다고 하는데, 그 명령을 실행하는 메소드 상부에
 @Transactional(propagation=Propagation.NOT_SUPPORTED)
  이것은 특수한 상황의 예이며, 또다른 경우가 나타난다고 한다.
위의 경우는, Sybase DB 를 사용하는 시스템에서 iBatis를 이용하여 DB를 제어하는 경우에 생기는 문제였다. 

그때그때 달라요!!! 뭐냐!!
 
  • 적용환경 : WindowsXP, Java 1.6 SDK 설치된 상태

     

Java에서 데이터베이스와 관련된 처리를 담당하기 위해 제공하는 표준 스펙으로서, 각 밴더사들은 이 스펙을 만족하는 JDBC 드라이버를 제공해야 한다.

각 밴더사(DBMS제조사)의 다운로드 페이지에서 제공하는 파일을 다운로드 받아보면, 그 압축파일 안에 JDBC를 사용하는 방법을 제공하고 있으므로, jar 파일만 받지 말고, 제공하는 JDBC 압축파일을 받는 것이 좋을 듯 하다.

 

각 밴더사들이 제공하는 JDBC 파일은 JDK/JRE/lib/ext 폴더에 넣어두면, 이클립스나 IDE 프로그램이 자동으로 인식하여 설치를 진행할 수 있다.

JavaExt.JPG

이하 페이지에서는 각각의 JDBC 를 이용하여 각각의 DB에 접속하는 방법을 기술하도록 하겠다.



이 글은 스프링노트에서 작성되었습니다.

+ Recent posts