我正在使用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。有人可以确认吗?