【问题标题】:SQL Error on Heroku with Rails after deployment部署后使用 Rails 的 Heroku 上的 SQL 错误
【发布时间】:2011-12-07 12:43:10
【问题描述】:

我的 Rails 应用程序在本地和我自己的 linux 根目录下完美运行(使用 sqlite 进行测试)

上传到heroku后,我遇到了一个小问题。

我的一半请求不再有效。

所有带有“.where()”条件的请求都被破坏了。

这是来自我的控制器的小代码 sn-p:

def GameModeB
  ActiveRecord::Base.include_root_in_json = false
  @highscore = Highscore.where("gamemode = \"b\"").order("points DESC").limit(100)

  respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :xml => @highscore }
    format.json  { render :json =>  @highscore}
  end
end

这是来自 heroku 日志的错误日志

2011-12-07T12:21:08+00:00 app[web.1]: LINE 1: ...highscores".* FROM "highscores" WHERE (gamemode = "b") ORDER...
2011-12-07T12:21:08+00:00 app[web.1]:                                                              ^
2011-12-07T12:21:08+00:00 app[web.1]: : SELECT  "highscores".* FROM "highscores" WHERE (gamemode = "b") ORDER BY points DESC LIMIT 100): 2

问题是where("gamemode = \"b\"")

那么正确的说法是什么,为什么它在 heroku 上不起作用?谢谢

【问题讨论】:

  • Heroku 使用 Postgres - 您应该尝试在开发中使用与生产中相同的环境。对于您的具体问题,解决方案是编写如下查询:@highscore = Highscore.where(:gamemode => "b").order("points DESC").limit(100)

标签: sql ruby-on-rails heroku


【解决方案1】:

Postgres 只允许字符串文字的单引号。有关从 mySQL 迁移到 Postgres 的信息,请参阅此 wiki。也适用于 sqlite。

【讨论】:

  • 这已经解决了问题。谢谢你。 @eugen 您的代码示例看起来比我的更“干净”。将重构语句
猜你喜欢
  • 2018-05-08
  • 2012-04-29
  • 1970-01-01
  • 2020-05-15
  • 2013-05-25
  • 2011-09-07
  • 2019-10-09
  • 2017-12-14
  • 2012-07-02
相关资源
最近更新 更多