【问题标题】:Is it possible to configure MySQL logging so that it only reports queries that were rolled back?是否可以配置 MySQL 日志记录以便它只报告已回滚的查询?
【发布时间】:2011-05-26 13:27:54
【问题描述】:

我有一个intermittent bug,我正试图追踪它,我只想捕获失败导致回滚的 MySQL 查询。我不想要完整的general querybinary 日志,因为大海捞针中有数百万个条目需要整理。

this solution 这样的东西,除了 MySQL 是完美的。

TIA,
京东

【问题讨论】:

    标签: php mysql zend-framework innodb rollback


    【解决方案1】:

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

    查看:本页用户cmets:http://dev.mysql.com/doc/refman/5.5/en/binary-log.html
    还有这个页面:http://ronaldbradford.com/blog/mysql-dml-stats-per-table-2009-09-09/

    这是official documentation for mysqlbinlog,它可能会帮助您获得所需的信息。

    【讨论】:

    • 谢谢@johan - 我看不到 ronaldbradford 链接有什么帮助,我错过了什么吗?您是否建议我可以包含“回滚”或正则表达式字符串?
    • @Jonathan,是的,这正是我的建议。
    【解决方案2】:

    在 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
            }
        }
    }
    

    您可以覆盖不同的方法,例如更新、查询等...

    【讨论】:

    • 谢谢@garvey - 我不想引入代码来捕获错误,因为这是一个生产系统,但这可能是最好的答案。 Magento 确实有一个通过 Zend_DB 的 ORM 层,所以可以在那里完成。
    猜你喜欢
    • 1970-01-01
    • 2010-09-13
    • 2011-03-24
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2021-11-14
    相关资源
    最近更新 更多