Rails PostgreSQL numeric field overflow ERROR

匿名 (未验证) 提交于 2019-12-03 00:57:01

问题:

I have a decimal field for price on my schema and every time that i try to insert the price the pg comes with this ERROR. anybody could give me any light? thank's

configuration

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

ERROR

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:

I quote the manual on Arbitrary Precision Numbers:

The scale of a numeric is the count of decimal digits in the fractional part, to the right of the decimal point. The precision of a numeric is the total count of significant digits in the whole number, that is, the number of digits to both sides of the decimal point.

You cannot assign numbers >= 1 to a column of the data type numeric(2,2). There is just no room for digits before the decimal point.

0.999 and 0.995 are in violation of the type as well, as they round to 1 with a given scale of 2.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!