首页 > 解决方案 > Activerecord 记录 sql 格式

问题描述

我使用 Sinatra 作为网络服务器,使用 Activerecord 作为 ORM。我的适配器是 oracle_enhanced。我像这样激活日志记录

LOG = Logger.new( "./logs/#{File.basename(__FILE__)}_log.txt", 'daily' )
ActiveRecord::Base.logger = LOG
ActiveSupport::LogSubscriber.colorize_logging = false

一切都很好,除非我更新模型时它以这种形式记录

D, [2018-11-05T09:38:11.426185 #5540] DEBUG -- :   SQL (0.0ms)  UPDATE "MYTABLE" 
SET "DESCRIPTION" = :a1 WHERE "MYTABLE"."ID" = 10121  [["description", "some text"]]

更糟糕的是,如果这导致错误,则 sql 只是部分的,参数部分会丢失..

有没有办法通过以下方式获取日志记录,以便我可以在例如 Sql*Plus 或 SqlDeveloper 中执行 sql?

UPDATE "MYTABLE" SET "DESCRIPTION" = "some text" WHERE "MYTABLE"."ID" = 10121

我还想知道哪个 SQL 被有效执行,在 Sql*Plus 或 SqlDeveloper 中记录的语法不起作用。

不知道这是单独在 Oracle/oracle_enhanced 适配器中还是在其他适配器中也是如此。

标签: ruby-on-railsrubyoracleactiverecord

解决方案


推荐阅读