Rails 基于位置的搜索不适用于 Heroku

发布于 2024-10-23 21:57:25 字数 732 浏览 1 评论 0原文

最近我在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぶ宁プ宁ぶ 2024-10-30 21:57:25

需要注意的是,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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文