728x90
[문제]

*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 이전버전에서 발생하는 에러

출처 : http://blog.daum.net/a_to_z/11606933


728x90

'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

+ Recent posts