0
我在rake任务的上下文中使用原始sql批量更新(出于性能原因)。像下面这样:在Rake任务中记录原始SQL错误
update_sql = Book.connection.execute("UPDATE books AS b SET
stock = vs.stock,
promotion = vs.promotion,
sales = vs.sales
FROM (values #{values_string}) AS vs
(stock, promotion, sales) WHERE b.id = vs.id;")
虽然一切都在当地发展“透明的”,如果这个SQL中生产钢轨任务的执行过程中失败(例如,由于促进列是零,声明无效) ,没有错误记录。
我可以手动记录这个捕获异常,如下所示,但是一些允许自动记录的选项会更好。
begin
...
rescue ActiveRecord::StatementInvalid => e
Rails.logger.fatal "Books update: ActiveRecord::StatementInvalid: "+ e.to_s
end