DB

Mybatis 글자수 4000bytes 이상 ora-01461 에러

snail voyager 2021. 2. 4. 20:19
728x90
반응형

What?

4000bytes 넘는 값을 mybatis 에 바인딩할 때 SUBSTR() 사용 시 ora-01461 발생.
테이블 컬럼이 CLOB 이라도 에러 발생.
INSERT SELECT 문에서도 에러 발생.

INSERT INTO TEST_TABLE
SELECT SUBSTR(#{INPUT}, 4000)    /* ORA-01461 Error */
FROM DUAL;

Why?

Oracle 에서 VARCHAR2 최대 크기는 4000bytes.
SUBSTR() 에 입력 값이 String 타입으로 변환되어 4000bytes 이상이면 에러 발생.

Solution

Java 에서 입력 값을 substr() 처리 후에 mybatis SQL에서는 바인딩만 처리.
INSERT VALUE 문으로 변경.

INSERT INTO TEST_TABLE (INPUT)
VALUE (#{INPUT});
728x90
반응형