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 에러 발생|작성자 신곤



댓글 없음:

댓글 쓰기