애플리케이션 개발/SQL

[SQL] ORA-01461: LONG 값은 LONG 열에 삽입할 때만 바인드할 수 있습니다

sofiaaa 2025. 4. 7. 09:01
반응형

 

 

이 오류는 현업에서 데이터 수정하시는데 자꾸 오류가 난다고 하셔서

로그를 보다가 발견한 오류이다.

컬럼에 설정된 문자열 사이즈보다 큰 문자열을 넣으려고 하면 나는 오류이다.

매우 간단!

 

🧠 이 오류는 왜 발생할까?

이 오류는 주로 VARCHAR2(4000) 타입의 컬럼에 4000바이트가 넘는 문자열을 삽입하려 할 때 발생합니다.
Oracle DB에서 VARCHAR2 컬럼은 최대 4000바이트까지만 저장할 수 있기 때문에,
그보다 큰 문자열을 넣으려고 하면 다음과 같은 오류가 발생하게 됩니다:

ORA-01461: can bind a LONG value only for insert into a LONG column

이럴 때는 CLOB(Character Large Object) 타입으로 컬럼을 변경하거나,
입력 데이터를 조정해 오류를 방지해야 합니다.

 

 

🛠 해결 방법

1. 데이터 타입을 CLOB으로 변경 -> 매우 비현실적

ALTER TABLE your_table MODIFY your_column CLOB;

이렇게 컬럼의 타입을 변경하면 4000바이트를 초과하는 데이터를 저장할 수 있게 됩니다.

단, CLOBVARCHAR2와는 달리 저장 방식이나 조회 방식에서 차이가 있으므로
해당 컬럼을 자주 사용하는 서비스라면 성능 및 쿼리 방식을 함께 고려해야 합니다.

 

현실에선 이렇게 데이터 타입을 변경할 수 없다.

데이터 넘어오기 전 화면에서 사이즈 체크를 잘 하는 수 밖엔..

반응형