我想运行原始SQL查询,如下所示:
ActiveRecord::Base.connection.execute(some_query);
我可以捕获执行查询时发生的任何错误吗?如果有,怎么样?
execute
会返回任何内容吗?它没有在文档中说明。
干杯
答案 0 :(得分:6)
您可以正常拯救错误。例如:
begin
ActiveRecord::Base.connection.execute(some_query)
rescue
# do stuff with exception
end
查看MySql (for example) adapter's code以查看正在发生的事情。
在这种情况下,execute
会返回MySql::Result
个对象。
答案 1 :(得分:4)
execute
方法通常由各自的数据库适配器实现,并从各自的数据库库返回Result对象。因此,如果您使用的是Mysql,则返回值将为Mysql::Result
类型。
通常情况下,如果出现错误,该方法只会引发可以获救的异常。
答案 2 :(得分:1)
我想我找到了答案。 Execute语句返回从数据库接收的错误,该错误可以在变量中捕获并显示。