2

最近我在 Heroku 上部署了我的应用程序。我正在使用 Geokit 根据用户的位置搜索事件。

@events = Event.all(:origin => [@location.lat, @location.lng], :within => 5, :conditions => ["end_date >= ?", Date.today], :select => “id,created_at,user_id,位置,描述,永久链接,标题”,:order => “created_at DESC”)

上面的语句在我的本地系统中运行良好,带有 mysql 数据库。

但是在 Heroku 上执行相同的 stmt 时出现错误。请检查我在 Heroku 上遇到的以下错误。

ActiveRecord::StatementInvalid (PGError: 错误: 函数弧度(字符变化) 不存在 2011-03-20T00:52:23-07:00 app[web.1]: LINE 2: ...,COS(0.303256183987648)* COS(1.36963671754269)*COS(RADIANS(fr... 2011-03-20T00:52:23-07:00 app[web.1]: ^ 2011-03-20T00:52:23-07:00 app[web .1]: 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。

任何帮助将不胜感激。

谢谢,卡利安。

4

1 回答 1

6

作为提醒,Heroku 使用 Postgres 作为唯一的 SQL 数据库后端:http ://devcenter.heroku.com/articles/database

因此,您的问题与这两个问答有关:

为什么 Postgresql 会像这样使用 Geokit 失败?

Rails:从 MySQL 转换为 PostGres 会破坏 Geokit 距离计算?

在您的情况下,您应该添加数据库迁移并将位置模型中的“lat”和“lng”从“string”(或“text”)更改为“float”,然后 Geokit 应该可以分别与 Postgres 和 Heroku 一起正常工作。

于 2011-03-20T09:41:49.723 回答