【问题标题】:Any way to view ALTER TABLE after its been executed? -MySQL执行后有什么方法可以查看 ALTER TABLE? -MySQL
【发布时间】:2011-01-20 16:15:20
【问题描述】:

以同样的方式 SHOW CREATE TABLE tblname;带回之前执行的内容,是否可以查看 ALTER TABLE 查询的 SQL? 请帮忙?

【问题讨论】:

    标签: mysql create-table alter-table


    【解决方案1】:

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

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

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

    【讨论】:

    • dev.mysql.com/doc/refman/5.0/en/server-logs.html 是一个指向 MySQL 管理日志描述的链接。
    • 感谢您的回复,我正在使用 phpmyadmin 但我似乎找不到任何历史记录或日志选项。
    • 如果您需要数据,可以请系统管理员为您获取查询日志吗?让他们在特定日期使用“alter”从您的用户那里找到命令。希望他们能提供帮助。
    【解决方案2】:

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

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

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

    show variable like 'log_bin';
    

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

    【讨论】:

      【解决方案3】:

      工具:

      • Maatkit.
      • Red-Gate 的 MySQL 架构和数据比较
      • 蟾蜍
      • SQLYog
      • MySQL 差异

      手动:

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

      show variable like 'log_bin';
      

      那么,

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

      转到 test.file 以查看更改语句。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-15
        相关资源
        最近更新 更多