这是上下文的一些基本代码
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 语句,这对我的情况没有帮助。
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