最近我在 Heroku 上部署了我的应用程序。我正在使用 Geokit 根据用户位置搜索事件。
@events = Event.all(:origin => [@location.lat, @location.lng], :within => 5, :conditions => ["end_date >= ?", Date.today], :选择=>“id,created_at,user_id,位置,描述,永久链接,标题”,:order =>“created_at DESC”)
上面的语句在我的带有 mysql 数据库的本地系统中运行良好。
但是我在 Heroku 上执行相同的 stmt 时遇到错误。请检查我在 Heroku 上遇到的以下错误。
ActiveRecord::StatementInvalid(PGError:错误:函数弧度(字符变化)不存在 2011-03-20T00:52:23-07:00 应用程序[web.1]: 第 2 行: ...,COS(0.303256183987648)*COS(1.36963671754269)*COS(RADIANS(fr... 2011-03-20T00:52:23-07:00 应用程序[web.1]:^ 2011-03-20T00:52:23-07:00 app[web.1]: 提示:没有函数与给定名称和参数类型匹配。您可能需要添加显式类型转换。
任何帮助将不胜感激。
谢谢, 卡延。
最佳答案
需要注意的是,Heroku 使用 Postgres 作为唯一的 SQL 数据库后端:http://devcenter.heroku.com/articles/database
因此,您的问题与这两个问答有关:
Why does Postgresql fail with Geokit like this?
Rails: Converting from MySQL to PostGres breaks Geokit Distance Calculations?
在您的情况下,您应该添加数据库迁移并将位置模型中的“lat”和“lng”从“string”(或“text”)更改为“float”,然后 Geokit 应该可以与 Postgres 一起正常工作分别是 Heroku。
关于ruby-on-rails - Rails 基于位置的搜索不适用于 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5367365/