DBAtlas · 데이터베이스 운영 아틀라스

ORA-01438: value larger than specified precision allowed for this column

Oracle

의미

NUMBER 컬럼에 정의된 precision과 scale 한도를 초과하는 숫자가 기록되었다. 예를 들어 정수부가 3자리인 값은 NUMBER(4,2) 컬럼에 들어가지 않는다.

원인

컬럼의 NUMBER(p,s) 정의가 데이터에 비해 너무 좁음. 계산 결과가 예상보다 큼. 소수부 scale이 정수부에 남는 자릿수를 줄임(NUMBER(5,3)은 정수 2자리만 허용).

해결 방법

실제 데이터 범위에 맞게 컬럼 용량을 넓힌다: ALTER TABLE my_table MODIFY (my_column NUMBER(12,2)); 애플리케이션에서 값을 반올림하거나 ROUND/TRUNC로 scale에 맞춘다. 넘치는 행을 찾으려면 테스트하면서 쿼리 범위를 좁히고, 입력 검증을 추가한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목