2010-05-11 57 views
2

我最近把我的數據庫從MySQL切換到PostGres。我也使用GeoKit。當我開始使用已經播種的新數據庫時,出現以下錯誤:Rails:從MySQL轉換到PostGres會打破Geokit距離計算?

PGError: ERROR: function radians(character varying) does not exist 
LINE 1: ...COS(0.661045389762993)*COS(-2.12957994527573)*COS(RADIANS(ti... 
                 ^
HINT: No function matches the given name and argument types. You might 
need to add explicit type casts. 

任何人都知道爲什麼現在這樣打破?我知道GeoKit仍然有效,因爲它仍然在數據庫播種時在每張票據的模型中執行地理編碼,但它不會正確計算距離。

回答

2

毫不奇怪"radians"函數期望有一個DOUBLE PRECISION參數。沒有爲TEXT/CHARACTER VARYING(a.k.a. VARCHAR)定義爲DOUBLE PRECISION的轉換。

可能最簡單的解決方案是定義這樣的演員陣容。

6

對於在搜索中查找這個答案的人來說,問題是Postgresql需要lat,lng列是十進制或者至少是非字符串,而MySQL允許同時使用這兩個列。

+1

實際上,小數點不起作用,它需要是浮點數。小數僅支持整數(例如:lat,long爲-32,117),其中浮點數支持實數(例如:lat,long爲-32.553,117.2342)。 – sizzle 2011-07-15 08:14:47

+0

在我的應用程序Szielenski中使用小數很好。 lat和lng完全保留實數。 – 2012-01-26 12:17:13