22003: numeric_value_out_of_range
PostgreSQL의미
숫자 값이 대상 타입이 허용하는 범위를 벗어났다. 예를 들어 integer 컬럼에 20억보다 큰 값을 기록하거나, numeric(5,2) 컬럼에 너무 큰 숫자를 기록한 경우.
원인
smallint/integer/bigint 한도 초과. numeric(p,s) precision/scale 초과. 산술 오버플로. 합계/곱이 타입 용량을 초과. 시퀀스가 타입의 상한에 도달.
해결 방법
컬럼/파라미터를 더 넓은 타입으로 변경한다(integer 대신 bigint, numeric precision 증가): ALTER TABLE my_table ALTER COLUMN my_column TYPE bigint; 업무 규칙에 따라 값을 반올림(ROUND)하거나 검증한다. 중간 계산이 오버플로된다면 표현식을 numeric으로 계산한다. 시퀀스 오버플로는 타입을 넓힌다.