22003: numeric_value_out_of_range
PostgreSQLЧто это значит?
Числовое значение выходит за допустимый для целевого типа диапазон. Например, запись значения больше 2 миллиардов в столбец integer или слишком большого числа в столбец numeric(5,2).
Почему возникает?
Превышение пределов smallint/integer/bigint; превышение точности/масштаба numeric(p,s); арифметическое переполнение; сумма/произведение, превышающие ёмкость типа; последовательность, достигшая верхней границы своего типа.
Как исправить
Измените тип столбца/параметра на более широкий (bigint вместо integer, увеличьте точность numeric): ALTER TABLE my_table ALTER COLUMN my_column TYPE bigint; Округляйте (ROUND) или проверяйте значение согласно бизнес-правилу. Если переполняется промежуточное вычисление, вычисляйте выражение как numeric. При переполнении последовательности расширьте тип.