본문 바로가기

프레임워크/iBATIS

JZ0SB: 매개변수 인덱스가 범위를 벗어났습니다. 1. iBatis + Sybase ASE 15.5 (ISO1) + JavaSE 6(JDK1.6.0_21) 환경에서... 제목과 같은 예외가 발생했다. 실행한 SQL은 다음과 같다. update IDCM..TC_CMN_CODE set code_wrth_abrv_name = '테스트' where code_id = #codeId# and code_wrth = #codeWrth# 그냥 지극히 평범한 SQL인데 왜 에러를 내는 것일까? 문제의 원인은 Encode(Charset)에 있었다. 즉, 매핑 XML이 와 같이 UTF-8으로 선언되어 있고 DB는 ISO1로 선언되어 있어서 코드를 변환했을 때 에러가 나는 것이었다. 만약 한글을 직접넣고 싶다면 UTF-8을 EUC-KR로 변경하면 정상처리된다. 더보기
iBatis + Sysbase ASE 15.5 Unicode Column CRU 검증결과 및 적용방안 1. 검증결과: JBoss WAS 에서 JDBC를 연결할 때 다음과 같이 DataSource를 생성한다. 이 내용은 JBoss에 배포할 서버의 deploy/sybase-ds.xml 의 내용중 일부이다. jdbc/KFlowDS jdbc:sybase:Tds:localhost:3000 com.sybase.jdbc3.jdbc.SybDriver eucksc … org.jboss.resource.adapter.jdbc.vendor.SybaseExceptionSorter true Sybase 여기서 핵심 내용은 JDBC의 속성중의 하나인 “CHARSET”을 “eucksc”로 설정함으로써 DB에서 읽거나 쓸 때 [iso1 : ISO-8859-1] – [eucksc: EUC-KR | KSC5601] 간 변환을 자동으로 .. 더보기
The server was expecting token 32 but got the token 33. This is an internal error. Spring 2.5.6 + 2.3.4.726 + Sybase ASE 15.5 환경에서 아래와 같은 에러가 발생했다면 데이터에 null이 들어있고 해당 값에 대한 적절한 JDBC Type을 찾지 못해서 발생하는 예외이다. 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. at com.sybase.jdbc3.tds.Tds.a(Unknown Source) at com.sybase.jdbc3.tds.Tds.nextResult(Unknown S.. 더보기