2011-04-07 123 views
0

我改变了对像这样一列的小数....的Heroku +轨道,耙分贝迁移本地工作并未能在Heroku ...

change_column :options, :size, :decimal, :precision => 8, :scale => 8 

运行它时它的工作但是本地,Heroku的它是抛出错误...

PGError: ERROR: numeric field overflow 
DETAIL: A field with precision 8, scale 8 must round to an absolute value less than 1. 
: ALTER TABLE "options" ALTER COLUMN "size" TYPE decimal(8,8) 

那么我如何给Heroku的值规模和精度8?

干杯。

回答

3

Postgres(在Heroku上运行的内容)如果它们完全相同,则不需要精度和刻度。

精度是显著数字的总数

小数位数的DP的权数。

因此通过设置8和8.这意味着它必须总共8位数字和DP右侧8位数字。因此,为什么错误 - 你不能有大于1的任何值。 如果你想要8位数字,那么DP的任何一边都使用16的精度和8的比例。如果你只需要8个总数字,使用precision = 8只要。

更多信息here

+0

O I看到,欢呼声。奇怪它如何在本地运行。 Heroku必须更严格。 – Smickie 2011-04-07 10:00:12

+0

@Smickie这可能是因为你的开发环境运行SQLite或其他非Postgresql数据库?严格性可能是特定数据库的结果。 – 2011-12-28 16:24:59

相关问题