有没有办法在执行后查看ALTER TABLE? -MySQL

时间:2010-02-24 18:43:45

标签: mysql create-table alter-table

以同样的方式SHOW CREATE TABLE tblname;带回以前执行的内容,无论如何都要查看ALTER TABLE查询的SQL? 请帮帮忙?

3 个答案:

答案 0 :(得分:5)

一个小小的澄清:show create table实际上并没有“带回以前执行的内容”。它只显示了从头开始创建表的DDL。该表可能已创建,然后多次更改,但show create table反映了表的当前状态。

至于找到最近在桌面上运行的任何alter table语句,最好的选择是二进制日志。

首先检查是否启用了二进制日志记录:

show variable like 'log_bin';

如果是,找到相关时间段的二进制日志,使用mysqlbinlog将其转换为SQL,然后grep查找相关的表名,找到您要查找的alter table语句。

答案 1 :(得分:2)

工具

  • Maatkit。
  • Red-Gate的MySQL Schema&数据比较
  • 蟾蜍
  • SQLyog的
  • MySQL Diff

<强>手册

首先检查是否启用了二进制日志记录:

show variable like 'log_bin';

然后,

mysqlbinlog /var/log/mysql/mysql-bin.000001 | grep 'alter table *tablename*' > test.file

转到test.file查看alter语句。

答案 2 :(得分:1)

如果您的MySQL实例已启用日志记录,则可以查看日志。这将是最好的选择。

如果您的系统已启用历史记录,则可以从同一系统启动客户端备份并尝试使用向上箭头。你或许可以在那里看到命令。

如果您知道运行该命令的用户并且他们碰巧直接从命令行运行它,那么相同的历史技巧可能会有效。