Rails PostgreSQL 数字字段溢出错误

问题描述 投票:0回答:1

我的架构上有一个价格的小数字段,每次我尝试插入价格时,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"
ruby-on-rails ruby database ruby-on-rails-3 postgresql
1个回答
9
投票

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

数字的精度是有效数字的总数 整数,即两边的位数 小数点。 numeric

scale
是小数位数 在小数部分,小数点右边。

您无法将数字

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

0.999
0.995
也违反了类型,因为它们以给定的
scale
2 舍入为 1

© www.soinside.com 2019 - 2024. All rights reserved.