2013년 8월 31일 토요일
[Oracle] ORA-24816 에러 발생
프로그램 작성중 다음과 같은 SQLException 이 발생하였다
ORA-24816: Expanded non LONG bind data supplied after actual LONG or LOB column
▶ 발생현상
varchar2(4000 byte) 컬럼이 있는데..
내용이 적을땐 들어가고 내용이 일정 분량이 넘어가면 입력되지 않는다.
컬럼길이 문제인지 알았으나 내용의 분량을 확인하니 그게 아님.
오라클의 설정확인했으나 utf-8이 아니므로 설정문제도 아님.
(utf-8인 경우 한글이 한글자에 2byte가 아니라 3byte 차지함)
로그 확인 결과 위와 같은 에러가 해당 컬럼이 문제가 아니라 long형이나
clob 컬럼이 문제라고 생각되어짐.(오라클 버그인거 같음)
▶ 해결방법
long 컬럼이나 clob 컬럼을 맨 나중으로 보내서 해결한다.
col2long이 long 컬럼, col3이 해당컬럼일 경우
이전 코드
insert into test(col1, col2long, col3 ) values( ? , ? , ? );
이후 코드
insert into test(col1, col3, col2long ) values( ? , ? , ? );
* 이 에러를 위와 같은 방법으로 해결했으나
오라클 패치나 컬럼유형 변경으로 인한 근본적인 해결책도 생각해 볼 수 있도록 한다.
[출처] ORA-24816 에러 발생|작성자 신곤
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기