Rails: Преобразование из MySQL в PostGres нарушает расчеты расстояний Geokit? - PullRequest
2 голосов
/ 12 мая 2010

Я недавно переключил свою базу данных с 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 ]

7 голосов
/ 16 мая 2010

Для тех, кто ищет этот ответ в поиске, проблема в том, что Postgresql требует, чтобы столбцы lat, lng были десятичными или как минимум нестроковыми, тогда как MySQL позволяет использовать оба.

2 голосов
/ 12 мая 2010

Неудивительно, что функция "радианы" ожидает аргумент DOUBLE PRECISION. И нет никакого определения, определенного для ВАРИАНТА ТЕКСТА / ХАРАКТЕРА (a.k.a. VARCHAR) для ДВОЙНОЙ ТОЧНОСТИ.

Вероятно, самое простое решение - определить такое приведение.

...