Rails 基于位置的搜索不适用于 Heroku
最近我在 Heroku 上部署了我的应用程序。我正在使用 Geokit 根据用户的位置搜索事件。
@events = Event.all(:origin => [@location.lat, @location.lng], :within => 5, :conditions => ["end_date >= ?", Date.today], :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 应用程序[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]: 提示:没有函数与给定名称和参数类型匹配。您可能需要添加显式类型转换。
任何帮助将不胜感激。
谢谢, 卡延。
Recently I deployed my application on Heroku. I'm using Geokit to search events, based on user's location.
@events = Event.all(:origin => [@location.lat, @location.lng], :within => 5, :conditions => ["end_date >= ?", Date.today], :select => "id, created_at, user_id, location, description, permalink, title", :order => "created_at DESC")
The above statement is working fine in my local system with mysql database.
But I'm getting error while executing same stmt on Heroku. Please check the below error I'm facing on Heroku.
ActiveRecord::StatementInvalid (PGError: ERROR: function radians(character varying) does not exist
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]: HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Any help would be greatly appreciated.
Thanks,
Kalyan.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
需要注意的是,Heroku 使用 Postgres 作为唯一的 SQL 数据库后端:http://devcenter.heroku。 com/articles/database
因此,您的问题与这两个问答有关:
为什么 Postgresql 会像这样使用 Geokit 失败?
Rails:从 MySQL 转换到 PostGres 会破坏 Geokit 距离计算?
在您的情况下,您应该添加数据库迁移并将位置模型中的“lat”和“lng”从“string”更改为(或“文本”)到“浮动”,然后 Geokit 应该分别与 Postgres 和 Heroku 一起正常工作。
As a heads-up, Heroku uses Postgres as the only SQL database backend: http://devcenter.heroku.com/articles/database
Therefore, your problem is related to these two Q&A:
Why does Postgresql fail with Geokit like this?
Rails: Converting from MySQL to PostGres breaks Geokit Distance Calculations?
In your case, you should add a database migration and change "lat" and "lng" in your location model from "string" (or "text") to "float", and then Geokit should work fine with Postgres and Heroku respectively.