我有一个表与下面的架构PostgreSQL的:如何解决“数字字段溢出”的问题
COLUMN_NAME, ORDINAL_POSITION,...., NUMERIC_PRECISION_INTEGER
"year";1;"";"YES";"numeric";;;17;10;17 "month_num";2;"";"YES";"numeric";;;17;10;17 "month_name";3;"";"YES";"text";;1073741824;;;
"week_of_month";4;"";"YES";"numeric";;;17;10;17
"count_of_contracts";5;"";"YES";"bigint";;;64;2;0
但是当我插入以下到它
insert into contract_fact values(2011, 8, 'Aug', 1, 367)
我看到下面的错误
ERROR: numeric field overflow
SQL state: 22003
Detail: A field with precision 17, scale 17 must round to an absolute value less than 1.
这不是一个模式,而是从一些内部postgres表转储。如果你能礼貌地产生一些可读的东西,比如\ d的输出或者用来创建这个表的CREATE TABLE语句(pgAdmin3可以帮你这么做)?另外,声明为数字(X,Y)的字段最多可以使用X个位置,并且逗号分配Y小数点。也就是说,如果X = Y,则只能存储值<1. –
另外,请在INSERT中包含列列表,这取决于任何特定的列顺序是一个坏主意。 –