Rails - 如何在OCIError中显示SQL值?

时间:2015-12-11 13:53:13

标签: ruby-on-rails oracle exception-handling

我正在使用Ruby on Rails与Oracle,使用gem ruby-oci8。有时出错了,我们得到一个SQL错误,不管是因为错误的分组还是PK违规。问题是,它从不显示查询尝试运行的实际值。

示例错误输出(从e.original_exception.sql获取sql,其中e是引发的异常,当然):

"INSERT INTO \"VERSIONS\" (\"CREATED_AT\", \"EVENT\", \"ID\", \"ITEM_ID\", \"ITEM_TYPE\", \"OBJECT\", \"WHODUNNIT\")
VALUES (:a1, :a2, :a3, :a4, :a5, :a6, :a7)"

问题是:如何让它显示实际值而不是“:a1,:a2等......”?

ps:此特定错误的完整异常消息是:

#<ActiveRecord::RecordNotUnique: OCIError: ORA-00001: unique constraint ({redated_db_name}.VERSIONS_PK) violated: INSERT INTO "VERSIONS" ("CREATED_AT", "EVENT", "ID", "ITEM_ID", "ITEM_TYPE", "OBJECT", "WHODUNNIT") VALUES (:a1, :a2, :a3, :a4, :a5, :a6, :a7)>

编辑:这也可能适用于其他数据库的错误,如MySQL。有人可以确认吗?

0 个答案:

没有答案