SQL 语法错误 - ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR

问题描述 投票:0回答:1

我创建了一个在 Rails 上构建 SQL 查询的方法,但遇到语法错误,不知道为什么,代码对我来说看起来是正确的。 也许这里有人能够找到问题?这可能是一些非常明显但我没有注意到的事情。

我的代码:

def build_query(info_arr)
  <<~SQL
     SELECT * FROM word_group_values WHERE account_id = :account_id
       AND word_group_id <> :word_group_id
       AND ("title", location) IN #{info_arr.join(', ')}
  SQL
end

我得到的错误:

ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR:  syntax error at or near ")" LINE 2: AND ("title", location) IN () ^ : SELECT * FROM word_group_values WHERE account_id = 110
 AND ("title", location) IN ()
sql ruby-on-rails ruby activerecord
1个回答
0
投票

您的查询是

SELECT * FROM word_group_values WHERE account_id = 110  AND ("title", location) IN ()

由于

info_arr
为空,您将得到一个空字符串,这是一个无效的查询。

(

syntax error at or near ")
正在抱怨空荡荡的
()
)

您需要传递一个元组数组才能使其有效。在这种情况下,普通字符串可能不起作用,除非

info_arr
是那个字符串,但它是空的。

© www.soinside.com 2019 - 2024. All rights reserved.