提交 e0b623a9 编写于 作者: A Aaron Patterson

translate exceptions on prepared statement failure

上级 7d14e03d
......@@ -353,6 +353,13 @@ def close
protected
def translate_exception(e, sql)
message = "#{e.class.name}: #{e.message}: #{sql}"
@logger.error message if @logger
exception = translate_exception(e, message)
exception.set_backtrace e.backtrace
end
def log(sql, name = "SQL", binds = [], statement_name = nil)
@instrumenter.instrument(
"sql.active_record",
......@@ -362,11 +369,7 @@ def log(sql, name = "SQL", binds = [], statement_name = nil)
:statement_name => statement_name,
:binds => binds) { yield }
rescue => e
message = "#{e.class.name}: #{e.message}: #{sql}"
@logger.error message if @logger
exception = translate_exception(e, message)
exception.set_backtrace e.backtrace
raise exception
raise translate_exception(e, sql)
end
def translate_exception(exception, message)
......
......@@ -853,7 +853,11 @@ def prepare_statement(sql)
sql_key = sql_key(sql)
unless @statements.key? sql_key
nextkey = @statements.next_key
@connection.prepare nextkey, sql
begin
@connection.prepare nextkey, sql
rescue => e
raise translate_exception(e, sql)
end
# Clear the queue
@connection.get_last_result
@statements[sql_key] = nextkey
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册