如何判断使用 ruby 在 postgres 中查询是否失败?

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

这是上下文的一些基本代码

require 'pg'

conn = PG.connect(db_params)
# example query:
response = conn.exec("update employees set id = 0 where role = 'owner'")

puts response

每当我尝试打印不是 select 语句的语句的响应时,我都会得到执行查询时创建的 Result 对象的地址,如前面的代码所示。

有没有办法知道查询是否失败?

我查看了“pg”gem 文档,它只提到执行 select 语句,这对我的情况没有帮助。

ruby postgresql rubygems pg
1个回答
0
投票

PG::Connection#exec
的文档说:

向PostgreSQL发送sql指定的SQL查询请求。成功时,它返回一个包含所有结果行和列的 PG::Result 实例。 失败时,它会引发 PG::Error。

因此,如果查询失败,它将引发

PG::Error
类型的异常。您可以使用
begin ... rescue
块来捕捉它:

begin
  conn.exec("update employees set id = 0 where role = 'owner'")
rescue PG::Error => e
  puts "#{e.class}: #{e.message}"
end
© www.soinside.com 2019 - 2024. All rights reserved.