2011-04-07 90 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

相關問題