【问题标题】:Why doesn't this query work on Heroku?为什么这个查询在 Heroku 上不起作用?
【发布时间】:2011-08-20 23:32:13
【问题描述】:

尝试使用 RoR 和 Heroku 实现简单的搜索。这在 localhost 上运行良好,但只要我推送到 Heroku,搜索就不会返回任何结果。我在本地使用 SQlite 而 Heroku 使用 Postgres,对吗?我认为这是问题所在,但经过大量研究后,我似乎无法找到解决方案。知道会发生什么吗?一如既往的帮助。

def self.search(search)
  if search
   where("title LIKE ? OR description LIKE ?", "%#{search}%", "%#{search}%")
  else
   find(:all)
  end
end

【问题讨论】:

    标签: ruby-on-rails sqlite postgresql heroku


    【解决方案1】:

    可能是因为SQLite's LIKE(部分)不区分大小写,但PostgreSQL's LIKE 区分大小写。试试这个:

    where("LOWER(title) LIKE ? OR LOWER(description) LIKE ?", "%#{search.downcase}%", "%#{search.downcase}%")
    

    PostgreSQL 也将 ILIKE 作为不区分大小写的 LIKE 版本,但 SQLite(也不是标准 SQL)没有,因此除非您专门针对 PostgreSQL,否则不应使用 ILIKE。

    如果您要发布到 Heroku,请将您的开发环境切换到 PostgreSQL,这样您就可以省去一些悲伤和困惑。

    另一种可能是您的 Heroku 数据库中没有任何数据(或任何匹配的数据)。

    【讨论】:

    • 这就解决了。 Def需要切换我的开发环境。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多