gpt4 book ai didi

ruby-on-rails - Rails 3.1 + postgresql 数据库 - SELECT ... WHERE ... IN 的 sql 语法错误

转载 作者:行者123 更新时间:2023-11-29 14:12:36 25 4
gpt4 key购买 nike

我有一个带有 postgres 8.4 的 Rails 3.1 设置。这是我的 gem 版本:

activerecord (3.1.3)
activemodel (= 3.1.3)
activesupport (= 3.1.3)
arel (~> 2.2.1)
tzinfo (~> 0.3.29)
activerecord-jdbc-adapter (1.2.1)
activerecord-jdbcpostgresql-adapter (1.2.1)
activerecord-jdbc-adapter (~> 1.2.1)
jdbc-postgres (~> 9.0.0)

现在,当我在 Controller 中执行此查询时:

@topics = Topic.find(:all, :conditions => ["\"ForumID\"in ?, @forum_ids]

我收到这个错误:

ActiveRecord::JDBCError: ERROR: syntax error at or near "'abc123'"
Position: 62: SELECT "topic".* FROM "topic" WHERE ("ForumID" in 'abc123','1234')
Completed 500 Internal Server Error in 314ms

ActiveRecord::StatementInvalid (ActiveRecord::JDBCError: ERROR: syntax error at or near "'abc123'"
Position: 62: SELECT "topic".* FROM "topic" WHERE ("ForumID" in 'abc123','1234')):

我认为问题在于括号在 SQL 语句中的位置。它应该在 in 之后,而不是在“ForumID”之前。

SELECT "topic".* FROM "topic"WHERE "ForumID"in ('abc123','1234') 完美运行,所以这是 postgresql 适配器中的错误,还是我我的查询有问题吗?

谢谢。

最佳答案

看起来您在查询中缺少括号。所以这个应该可以工作:

@topics = Topic.find(:all, :conditions => ["ForumID in (?)", @forum_ids])

由于您使用的是 Rails 3.1,因此最好使用:

@topis = Topic.where("ForumID in (?)", @forum_ids)

关于ruby-on-rails - Rails 3.1 + postgresql 数据库 - SELECT ... WHERE ... IN 的 sql 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8448034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com