【问题标题】:SQLite3 and Postgres/Heroku Ruby on Rails Query issuesSQLite3 和 Postgres/Heroku Ruby on Rails 查询问题
【发布时间】:2016-08-26 00:42:48
【问题描述】:

我正在尝试通过连接数据库中的两个表来进行查询。该查询在 localhost(由 SQLite3 提供支持的数据库)中完美运行,但是当它将它推送到 heroku 服务器(使用 postgres)时,它不再工作了。我尝试了一些方法,它都有效,但它们都适用于本地。

在我的控制器中,我有

@user = User.find(params[:id])

我正在尝试使用不同的方法查询以下语句并返回相同的结果。以下是我尝试过的不同方法。它们都可以在 SQLite3 上完美运行,但不能在 Heroku 上使用 Postgres。

@locations_user_rated = Location.joins('INNER JOIN rates').where("rates.rateable_id = locations.id AND rates.rater_id =?" , 2)(假设当前用户 ID = 2)

@locations_user_rated = Location.joins('INNER JOIN rates').where("rates.rateable_id = locations.id AND rates.rater_id =?" , User.find(params[:id]))

@locations_user_rated = Location.joins('INNER JOIN rates').where("rates.rateable_id = locations.id AND rates.rater_id =?" , @user)

@locations_user_rated = Location.joins('INNER JOIN rates').where('rates.rater_id' => @user).where("rates.rateable_id = locations.id")

我发现@user 是导致问题的原因。所以我把它换成了User.find(params[:id])。但是,服务器拒绝接受它。 我在 rails 网站上读到,只要它适用于任何 SQL,它就应该适用于 Heroku(Postgres)。但这里不是这种情况。

以下是我从 Heroku 服务器收到的日志。

2016-05-01T01:52:41.674598+00:00 app[web.1]: (1.3ms) SELECT COUNT(*) FROM "locations" INNER JOIN rates WHERE (rates.rateable_id = locations.id AND rates.rater_id =2) 2016-05-01T01:52:41.674760+00:00 app[web.1]: Completed 500 Internal Server Error in 10ms (ActiveRecord: 5.8ms)

2016-05-01T01:52:41.675453+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::SyntaxError: ERROR: syntax error at or near "WHERE"

2016-05-01T01:52:41.675454+00:00 app[web.1]: LINE 1: SELECT COUNT(*) FROM "locations" INNER JOIN rates WHERE (rat...

. .^(^ 显示导致问题的 where 子句)

Postgres 和 SQLite 的 WHERE 子句在语法上有什么区别?

更新:我发现它需要on 子句。如何在此处添加 on 子句?

【问题讨论】:

  • Heroku 建议您以开发模式(本地)运行 Postgresql。

标签: ruby-on-rails ruby postgresql heroku sqlite


【解决方案1】:

找到答案here。我发现它需要 ON 子句并且不要使用 WHERE 语句来指定它。请改用 ON 子句。

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 2019-01-08
    • 1970-01-01
    • 2013-11-20
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多