我有一个包含以下架构的表
COLUMN_NAME,ORDINAL_POSITION,....,NUMERIC_PRECISION_INTEGER
“年”; 1; “”; “YES”; “数字” ;;; 17; 10; 17 “month_num”; 2; “”; “YES”; “数字” ;;; 17; 10; 17 “MONTH_NAME”; 3 “;”, “YES”, “文本” ;; 1073741824 ;;;
“WEEK_OF_MONTH”; 4 “;”, “YES”; “数字” ;;; 17; 10; 17个
“count_of_contracts”; 5; “”; “YES”; “BIGINT” ;;; 64; 2; 0
但是当我将以下内容插入其中时
insert into contract_fact values(2011, 8, 'Aug', 1, 367)
我看到以下错误
错误:数字字段溢出
SQL状态:22003
细节:精度为17的字段,标尺17必须舍入到小于1的绝对值。
答案 0 :(得分:61)
看起来您将year
和week_of_month
列定义为numeric(17,17)
,这意味着17位数字,其中17位在小数点后面。所以值必须介于0和1之间。你可能意味着numeric(17,0)
,或者你应该使用整数类型。
答案 1 :(得分:0)
即使没有设定上限,我也遇到了类似的问题。 如果您遇到这种情况,可能需要在此处查看全局PostgreSQL限制:https://www.postgresql.org/docs/9.6/static/datatype-numeric.html
例如,TIMESTAMP是一种限制为9223372036854775807
的BIGINT,因此您可能希望验证在查询中传递的整数是否低于该值。