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

时间:2009-09-02 22:24:08

标签: ruby-on-rails postgresql geokit

我刚刚开始使用Rails为我的应用程序玩geokit 建造。我的唱片得到了地理编码,但是当我走的时候 进入控制台,看看我能用它做什么,它吹了 使用以下内容:user是一个用户对象,其中包含lat和lng 数据库

>> Restaurant.find(:all, :origin => user) 

  Restaurant Load (0.0ms)   PGError: ERROR: operator does not exist: 
numeric - character varying 
LINE 1: ...*, SQRT(POW(111.1819*(-33.872517-restauran... 
 ^ 
HINT: No operator matches the given name and argument type(s). You 
might need to add explicit type casts. 
: SELECT *, SQRT(POW(111.1819*(-33.872517-restaurants.lat),2)+ 
 POW(76.7136337302943*(151.205536-restaurants.lng),2)) 
 AS distance FROM "restaurants" 
ActiveRecord::StatementInvalid: PGError: ERROR:  operator does not 
exist: numeric - character varying 
LINE 1: ...*,                   SQRT(POW(111.1819*(-33.872517- 
restauran... 
                                                             ^ 
HINT:  No operator matches the given name and argument type(s). You 
might need to add explicit type casts. 
: SELECT *,                   SQRT(POW(111.1819*(-33.872517- 
restaurants.lat),2)+ 
                  POW(76.7136337302943*(151.205536-restaurants.lng), 
2)) 
 AS distance FROM "restaurants" 
        from /Users/chris/projects/mine/lunchdecider/vendor/rails/ 
activerecord/lib/active_record/connection_adapters/abstract_adapter.rb: 
212:in `log' 
        from /Users/chris/projects/mine/lunchdecider/vendor/rails/ 
activerecord/lib/active_record/connection_adapters/ 
postgresql_adapter.rb:538:in `execute' 
        from /Users/chris/projects/mine/lunchdecider/vendor/rails/ 
activerecord/lib/active_record/connection_adapters/ 
postgresql_adapter.rb:1019:in `select_raw' 
        from /Users/chris/projects/mine/lunchdecider/vendor/rails/ 
activerecord/lib/active_record/connection_adapters/ 
postgresql_adapter.rb:1006:in `select' 
        from /Users/chris/projects/mine/lunchdecider/vendor/rails/ 
activerecord/lib/active_record/connection_adapters/abstract/ 
database_statements.rb:7:in `select_all_without_query_cache' 
        from /Users/chris/projects/mine/lunchdecider/vendor/rails/ 
activerecord/lib/active_record/connection_adapters/abstract/ 
query_cache.rb:62:in `select_all' 
        from /Users/chris/projects/mine/lunchdecider/vendor/rails/ 
activerecord/lib/active_record/base.rb:661:in `find_by_sql' 
        from /Users/chris/projects/mine/lunchdecider/vendor/rails/ 
activerecord/lib/active_record/base.rb:1548:in `find_every' 
        from /Users/chris/projects/mine/lunchdecider/vendor/rails/ 
activerecord/lib/active_record/base.rb:615:in `find' 
        from /Users/chris/projects/mine/lunchdecider/vendor/plugins/geokit- 
rails/lib/geokit-rails/acts_as_mappable.rb:138:in `find' 
        from (irb):10 

任何想法如何解决这个问题?不幸的是,谷歌并不多 我试图搜索我的错误消息时提供帮助...

1 个答案:

答案 0 :(得分:6)

在你的迁移中,你可能会创建restaurants.lat和restaurants.lng作为字符串(字符变化),而它们应该是浮点数。 Postgres不会为你投这个。改变列类型,你应该没问题。