본문 바로가기

노력을 이기는 재능은 없고
노력을 외면하는 결과도 없다.
- 이창호 9단

E R R O R/Java Error

[Java Error] java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column

  Junesker   2022. 8. 9.
반응형

java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column

게시판에 글 등록을 하던 중, 위와 같은 에러가 발생했다. 내용으로 작성하고 있었던 텍스트 길이가 데이터베이스 테이블의 내용 컬럼의 공간보다 훨씬 컸나보다. Long으로 설정된 컬럼은 Long에 맞춰 내용을 작성하여 저장해야하는데, 그렇지 못한 것이다. 내용에 이미지를 한개 첨부했는데 해당 이미지가 base64로 인코딩되어 들어가는 바람에 이미지가 데이터로 변환되서 내용에 첨부되었다. 그래서 엄청난 길이의 텍스트 데이터로 내용에 첨부되었다. 실제 html형태로 보면 이미지지만 소스코드 보기로 확인해보면 엄청난 길이를 가진 텍스트로 보여진다.

 

 

 

 

 

처리결과
데이터베이스 테이블에서 설정한 컬럼의 최대 공간안에서 글을 작성하거나, 데이터베이스 테이블의 해당 컬럼 크기를 CLOB으로 변경하여 더 많은 데이터를 담을 수 있는 공간을 만들어준다.

 

 

 

 

 

이미지 base64 인코딩 형태

Oracle 데이터베이스 VARCHAR2의 최대 사이즈는 4000바이트이다. 그래서 4000바이트안에 위와 같은 이미지 데이터를 담는데 한계가 있다. 그래서 이 보다 더 크고 많이 담을 수 있는 공간을 가진 CLOB으로 변경하면된다.

 

VARCHAR : SIZE 크기의 가변길이 문자 데이터타입, 최소 1바이트 / 최대 4000바이트
CLOB : 대용량의 바이너리 데이터를 파일 형태로 저장하기 위한 데이터타입, 최대크기 4기가바이트(GB)

 

 

 

 

 

@Junesker


 

반응형

댓글