【问题标题】:Rails: Converting from MySQL to PostGres breaks Geokit Distance Calculations?Rails:从 MySQL 转换为 PostGres 会破坏 Geokit 距离计算?
【发布时间】:2010-05-11 22:48:12
【问题描述】:

我最近将我的数据库从 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 仍然可以工作,因为在为数据库播种时,它仍在为每个票证执行模型中的地理编码,它只是无法正确进行距离计算。

【问题讨论】:

    标签: ruby-on-rails postgresql plugins geokit


    【解决方案1】:

    对于那些在搜索中查找此答案的人来说,问题在于 Postgresql 要求 lat、lng 列是十进制或至少是非字符串,而 MySQL 允许同时使用两者。

    【讨论】:

    • 其实小数是不行的,需要是浮点数。小数仅支持整数(例如:lat,long of -32,117),而浮点数支持实数(例如:lat,long of -32.553,117.2342)。
    • 在我的应用程序 Szielenski 中很好地处理小数。完全保留 lat 和 lng 的实数。
    【解决方案2】:

    不出所料,"radians" 函数需要一个 DOUBLE PRECISION 参数。并且没有为 TEXT/CHARACTER VARYING (a.k.a. VARCHAR) 定义为 DOUBLE PRECISION 的转换。

    可能最简单的解决方案是定义这样的演员表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2012-12-25
      • 2011-04-17
      • 2019-02-04
      • 2015-10-18
      相关资源
      最近更新 更多