Rails PostgreSQL数字字段溢出ERROR

时间:2012-05-15 22:45:05

标签: ruby-on-rails ruby database ruby-on-rails-3 postgresql

我的架构上有一个十进制字段的价格,每次我尝试插入价格时,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"

1 个答案:

答案 0 :(得分:7)

我引用了Arbitrary Precision Numbers上的手册:

  

数字的比例是数字中的小数位数   小数部分,小数点右侧。一个人的精确度   numeric是整数中有效数字的总数,   也就是说,小数点两边的位数。

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

0.9990.995也违反了该类型,因为它们以{em> 2 2 的方式舍入1