【发布时间】:2011-01-20 16:15:20
【问题描述】:
以同样的方式 SHOW CREATE TABLE tblname;带回之前执行的内容,是否可以查看 ALTER TABLE 查询的 SQL? 请帮忙?
【问题讨论】:
标签: mysql create-table alter-table
以同样的方式 SHOW CREATE TABLE tblname;带回之前执行的内容,是否可以查看 ALTER TABLE 查询的 SQL? 请帮忙?
【问题讨论】:
标签: mysql create-table alter-table
如果您的 MySQL 实例已开启日志记录,您可以查看日志。这将是最好的选择。
如果您的系统开启了历史记录,您可以从同一系统启动客户端备份并尝试向上箭头。你也许可以在那里看到命令。
如果您知道运行该命令的用户并且他们碰巧直接从命令行运行它,那么同样的历史技巧可能会奏效。
【讨论】:
一个小的澄清:show create table 实际上并没有“恢复以前执行的内容”。它只是向您展示将从头开始创建表的 DDL。该表可能已创建并更改了多次,但show create table 反映了该表的当前状态。
至于查找最近在表上运行的任何alter table 语句,最好的选择是二进制日志。
首先检查是否启用了二进制日志记录:
show variable like 'log_bin';
如果是,找到相关时间段的二进制日志,使用mysqlbinlog转换成SQL,然后grep相关表名找到你要找的alter table语句。
【讨论】:
工具:
手动:
首先检查是否启用了二进制日志记录:
show variable like 'log_bin';
那么,
mysqlbinlog /var/log/mysql/mysql-bin.000001 | grep 'alter table *tablename*' > test.file
转到 test.file 以查看更改语句。
【讨论】: