3

我的架构上有一个十进制的价格字段,每次我尝试插入价格时,pg 都会出现此错误。任何人都可以给我任何光吗?谢谢

配置

t.decimal  "price",  :precision => 2, :scale => 2

错误

PG::Error: ERROR:  numeric field overflow
DETAIL:  A field with precision 2, scale 2 must round to an absolute value less than 1.
: INSERT INTO "items" ("category_id", "name", "price", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) RETURNING "id"
4

1 回答 1

7

我引用了任意精度数的手册:

数字的小数位数是小数部分中小数位数的计数,位于小数点右侧。数字的精度是整数中有效位数的总数,即小数点两边的位数。

您不能将数字分配给>= 1数据类型的列numeric(2,2)。小数点前没有数字的空间。

0.999并且0.995也违反了类型,因为它们以1给定的比例四舍五入2

于 2012-05-15T22:57:57.050 回答