4

最近、データベースを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は、データベースがシードされたときにチケットごとにモデルでジオコーディングを実行しているため、引き続き機能することを知っています。距離の計算が正しく行われないだけです。

4

2 に答える 2

12

検索でこの回答を調べる場合、問題は、Postgresql では緯度、長さの列が 10 進数または少なくとも非文字列である必要があるのに対し、MySQL では両方の使用が許可されていることです。

于 2010-05-16T03:27:37.593 に答える
2

当然のことながら、「radians」関数は DOUBLE PRECISION 引数を想定しています。また、TEXT/CHARACTER VARYING (別名 VARCHAR) から DOUBLE PRECISION へのキャストは定義されていません。

おそらく最も簡単な解決策は、そのようなキャストを定義することです。

于 2010-05-12T11:13:35.923 に答える