이런 경우가 있었다 #

단순한 select 구문을 jdbc를 통해 실행했다. 이런 오류가 났다.
  프로토콜 위반
oracle DB이고 oracle제공 jdbc driver 를 사용했다. 특정컬럼의 값때문에 발생하는 문제였다. 해당 컬럼에 들어가있는 데이터값은
"ml  (참"
였다. (이것은 골든이나 토드 같은 툴에서 조회했다.) 눈으로는 이렇게 보여도 특수문자가 포함되어있을지도 모르겠다. 어쨌든 그냥 봐서는 8바이트 이내의 정상데이터였다.(해당 컬럼 사이즈는 8바이트였음)

이 데이터는 jdbc를 통해 인서트된것은 아니었다.

결론적으로 해결은 이렇게 했다.

기존의 쿼리문:
select col1 from tbl1;

고친 쿼리문(col1 컬럼의 길이는 8자리이다) :
select substr(col1,1,8) col1 from tbl1;
명시적으로 길이를 잘라주니까 오류가 안나왔다.

jdbc driver의 버그인가?
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-08-27 17:32:32
Processing time 0.0065 sec