DBAtlas · 数据库运维图谱

22003: numeric_value_out_of_range

PostgreSQL

含义

数值超出了目标类型允许的范围。例如,向 integer 列写入大于 20 亿的值,或数字对 numeric(5,2) 列来说过大。

原因

超出 smallint/integer/bigint 限制;超出 numeric(p,s) 的精度/小数位数;算术溢出;和/积超出类型容量;序列达到其类型的上限。

解决方法

将列/参数改为更宽的类型(用 bigint 代替 integer,增大 numeric 精度):ALTER TABLE my_table ALTER COLUMN my_column TYPE bigint; 根据业务规则对值取整(ROUND)或进行校验。如果中间计算溢出,以 numeric 类型计算表达式。对于序列溢出,加宽类型。

在 DBAtlas 中打开 →

同一数据库的其他条目