*struts를 이용 contnets을 디비에 입력하던 중 아래 에러 발생
java.sql.SQLException: 데이터 크기가 해당 유형의 최대 크기보다 큽니다: 2468
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.ttc7.TTCItem.setArrayData(TTCItem.java:148)
at oracle.jdbc.dbaccess.DBDataSetImpl.setBytesBindItem(DBDataSetImpl.java:2461)
at oracle.jdbc.driver.OraclePreparedStatement.setItem(OraclePreparedStatement.java:1184)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:1601)
[대처]
1. 컬럼확인
varchar2(4000)
2.
에러가 발생하는 컬럼의 바이트수 getBytes()로 확인 결과 :1714로 4000이 넘지 않음
3.구글링 결과 jdbc 문제일수 있다하여 버전별(8i,9i,10i 각각 classes12.jar(zip), ojdbc.jar)로 시험
4. 3이후에도 동일한 에러발생
다시 구글링 결과
setString(4, a); 대신
setCharacterStream(5, new StringReader(a),a.length());로 해결
출처:
http://www.javaservice.net/~java/bbs/read.cgi?m=qna&b=QandA&c=r_p&n=1004496075&p=10&s=t
http://www.javaservice.net/~java/bbs/read.cgi?m=etc&b=jdbc&c=r_p&n=1153790249&p=1&s=t
[원인]
getBytes("UTF8")로 확인결과 에러코드와 같은 2468 나옴
setString() 사용시 크기를 "UTF8"로 변환시의 값과 비교
오라클 10버전 부터는 setstring으로도 가능함.
10 이전버전에서 발생하는 에러
'JAVA' 카테고리의 다른 글
struts 파일 업로드 (3) | 2012.07.29 |
---|---|
자바에서 OS 알아내기 (0) | 2012.07.29 |
cannot cast from ActionForm to *form (0) | 2012.07.29 |
톰캣에 스트러츠 DB (0) | 2012.07.29 |
javax.servlet.jsp.PageContext cannot be resolved to a type (0) | 2012.07.29 |