是否可以配置MySQL日志记录,使其只报告已回滚的查询


Is it possible to configure MySQL logging so that it only reports queries that were rolled back?

我有一个间歇性错误,我正在努力追踪,我只想捕获导致回滚的失败MySQL查询。我不想要一个完整的通用查询或二进制日志,因为大海捞针中会有数百万个条目需要排序。

除了MySQL之外,类似这样的解决方案将是完美的。

TIA,
JD

这不是您问题的直接答案,但实用程序mysqlbinlog可以从二进制日志中提取数据。

请参阅:此页面中的用户评论:http://dev.mysql.com/doc/refman/5.5/en/binary-log.html
本页:http://ronaldbradford.com/blog/mysql-dml-stats-per-table-2009-09-09/

以下是mysqlbinlog的官方文档,它可能会帮助您获得所需的信息。

在MySQL中,这是非常困难的(或者可能是不可能的)。你可以用PHP来完成。如果不使用像mysql_query这样的低级函数,而使用像->query()这样的高级方法,则可以向它们添加逻辑。若查询失败(例如返回false),请将其添加到日志中。对不起我的英语。

Zend_DB:注意事项

class My_DB extends Zend_DB {
    public function insert($data) {
        try {
            parent::insert($data);
        } catch (Exception $e) {
            // put $e->getMessage() to log
        }
    }
}

您可以覆盖不同的方法,如更新、查询和其他。。。