最近我在Heroku上部署了我的应用程序。我正在使用Geokit根据用户的位置搜索事件。
@events = Event.all(:origin => [@ location.lat,@ location.lng],:within => 5,:conditions => [“end_date> =?”,日期。今天],:select =>“id,created_at,user_id,location,description,permalink,title”,: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]:提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
非常感谢任何帮助。
谢谢, 格利扬
答案 0 :(得分:6)
作为单挑,Heroku使用Postgres作为唯一的SQL数据库后端:http://devcenter.heroku.com/articles/database
因此,您的问题与这两个Q& A:
有关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分别。