【问题标题】:Is there a way to know what are all the tables changed有没有办法知道所有表都发生了什么变化
【发布时间】:2012-04-12 00:03:52
【问题描述】:

我正在调试一个使用 MySQL 的 Web 应用程序。我看到很多表在不同的流程(注册、编辑等)之间被修改。而且,通过代码库来了解在不同调用之间修改了哪些表是非常困难的。

有没有更好的方法知道两次(两次调用)之间修改了哪些表。

【问题讨论】:

  • 您的意思是表的结构发生了变化还是添加了数据?您应该能够将触发器添加到可以在添加数据时记录的表中。

标签: mysql database


【解决方案1】:

启用general query log 以了解所有查询正在执行什么。

我遇到了这个-How can I tell when a MySQL table was last updated?

在更高版本的 MySQL 中,您可以使用 information_schema 数据库 告诉您另一个表何时更新:

从 information_schema.tables WHERE 中选择 UPDATE_TIME TABLE_SCHEMA = 'dbname' AND TABLE_NAME = 'tabname'

这当然意味着打开与数据库的连接。

【讨论】:

    【解决方案2】:

    show-table-status

    SHOW TABLE STATUS FROM db_name WHERE Update_time BETWEEN (<date1> AND <date2>)
    

    【讨论】:

      【解决方案3】:

      以下将返回有关数据库的不同时间戳。看看这对你有没有帮助。

      SELECT *
      FROM   information_schema.tables
      WHERE  TABLE_SCHEMA = 'dbname'
      

      你也可以考虑使用像http://www.jetprofiler.com/这样的mysql分析器

      【讨论】:

        【解决方案4】:

        在您的服务器上启用 binlog,这比查询日志更适合您的目的,因为它只包含更改(更新、插入、删除)。

        但是,你必须使用mysqlbinlog命令行工具将其转换为纯文本文件:

        mysqlbinlog server-bin.00001 > binlog.txt
        

        【讨论】:

          猜你喜欢
          • 2010-10-06
          • 1970-01-01
          • 2023-03-08
          • 2013-06-12
          • 2022-10-24
          • 1970-01-01
          • 1970-01-01
          • 2020-01-26
          • 1970-01-01
          相关资源
          最近更新 更多