【发布时间】:2012-04-12 00:03:52
【问题描述】:
我正在调试一个使用 MySQL 的 Web 应用程序。我看到很多表在不同的流程(注册、编辑等)之间被修改。而且,通过代码库来了解在不同调用之间修改了哪些表是非常困难的。
有没有更好的方法知道两次(两次调用)之间修改了哪些表。
【问题讨论】:
-
您的意思是表的结构发生了变化还是添加了数据?您应该能够将触发器添加到可以在添加数据时记录的表中。
我正在调试一个使用 MySQL 的 Web 应用程序。我看到很多表在不同的流程(注册、编辑等)之间被修改。而且,通过代码库来了解在不同调用之间修改了哪些表是非常困难的。
有没有更好的方法知道两次(两次调用)之间修改了哪些表。
【问题讨论】:
启用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'
这当然意味着打开与数据库的连接。
【讨论】:
SHOW TABLE STATUS FROM db_name WHERE Update_time BETWEEN (<date1> AND <date2>)
【讨论】:
以下将返回有关数据库的不同时间戳。看看这对你有没有帮助。
SELECT *
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'dbname'
你也可以考虑使用像http://www.jetprofiler.com/这样的mysql分析器
【讨论】:
在您的服务器上启用 binlog,这比查询日志更适合您的目的,因为它只包含更改(更新、插入、删除)。
但是,你必须使用mysqlbinlog命令行工具将其转换为纯文本文件:
mysqlbinlog server-bin.00001 > binlog.txt
【讨论】: