PostgreSQL:如何解决"numeric field overflow"问题



我有一个表,模式如下

COLUMN_NAME, ORDINAL_POSITION,…, NUMERIC_PRECISION_INTEGER
"年";1;";"是的","数字";;;17;10;17"month_num";2、";"是的","数字";;;17;10;17"month_name";3,";"是的";"文本";;1073741824;;;
"week_of_month";4,";"是的","数字";;;17;10;17
"count_of_contracts";5。";"是";"bigint";;;64;2。0

但是当我插入以下内容时

insert into contract_fact values(2011, 8, 'Aug', 1, 367)  

我看到以下错误

错误:数字字段溢出
SQL状态:22003
详细信息:精度为17,比例为17的字段必须舍入到小于1的绝对值。

看起来您的yearweek_of_month列定义为numeric(17,17),这意味着17位数字,其中17位在小数点后面。所以这个值必须在0到1之间。您可能指的是numeric(17,0),或者您可能应该使用整数类型。

即使没有设置上限,我也遇到了类似的问题。如果这种情况发生在您身上,您可能需要查看全局PostgreSQL限制:https://www.postgresql.org/docs/9.6/static/datatype-numeric.html

例如TIMESTAMP是一种BIGINT,限制为9223372036854775807,所以你可能想要验证你在查询中传递的整数是否低于该值。

相关内容

最新更新