[英]PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer
I am doing a "IN" query using prepared statements on rails. 我正在使用Rails上的预备语句进行“ IN”查询。 I am getting PG::InvalidTextRepresentation error. 我收到PG :: InvalidTextRepresentation错误。
code : 代码:
def mark_ineligible(match_ids)
ids = match_ids.join(", ")
result = epr("mark_matches_as_ineligible",
"UPDATE matches SET is_eligibile=false WHERE id IN ( $1 )",
[ids])
end
def epr(statementname, statement, params)
connection = ActiveRecord::Base.connection.raw_connection
begin
result = connection.exec_prepared(statementname, params)
return result
rescue PG::InvalidSqlStatementName => e
begin
connection.prepare(statementname, statement)
rescue PG::DuplicatePstatement => e
# ignore since the prepared statement already exists
end
result = connection.exec_prepared(statementname, params)
return result
end
end
trying to invoke this using : 尝试使用以下方法调用此方法:
match_ids = [42, 43]
mark_ineligible match_ids
PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer: "42, 43"
from (irb):24:in `exec_prepared'
from (irb):24:in `rescue in epr'
from (irb):15:in `epr'
from (irb):8:in `mark_ineligible'
from (irb):35
Please help here. 请在这里帮助。 I want to know why I am getting this errors and how to fix it. 我想知道为什么会出现此错误以及如何解决。
Thanks, 谢谢,
mark_ineligible
should look as follows: mark_ineligible
应该如下所示:
def mark_ineligible(match_ids)
result = epr("mark_matches_as_ineligible",
"UPDATE matches SET is_eligibile=false WHERE id IN ( $1 )", match_ids)
end
And when you call mark_ineligible
, pass an array as argument: 当您调用mark_ineligible
,将一个数组作为参数传递:
mark_ineligible(match_ids) #=>match_ids = [42,43]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.