2010-02-24 54 views

回答

1

如果您的MySQL實例已打開日誌記錄,則可以查看日誌。這將是最好的選擇。

如果您的系統已打開歷史記錄,則可以從同一系統啓動客戶端備份並嘗試向上箭頭。您可能能夠在那裏看到該命令。

如果您知道運行該命令的用戶,並且他們碰巧直接從命令行運行該命令,則可能會使用相同的歷史記錄技巧。

+0

http://dev.mysql.com/doc/refman/5.0/en/server-logs.html是MySQL管理日誌記錄描述的鏈接。 – TheJacobTaylor 2010-02-24 18:52:00

+0

謝謝你回覆,我使用phpmyadmin,但我似乎無法找到任何歷史或日誌選項。 – 2010-02-24 19:05:32

+0

如果您需要這些數據,您可以要求系統的管理員爲您查詢查詢日誌嗎?讓他們在特定的日子用「alter」找到用戶的命令。希望他們能夠提供幫助。 – TheJacobTaylor 2010-02-24 23:02:41

4

一個小小的澄清:show create table實際上並沒有「帶回之前執行的內容」。它只是向您顯示將從頭開始創建表的DDL。該表可能已經創建,然後多次更改,但show create table反映了表的當前狀態。

至於查找最近在桌面上運行的任何alter table語句,最好的選擇是二進制日誌。

首先檢查,看是否二進制啓用了日誌記錄:

show variable like 'log_bin'; 

如果是,找到二進制日誌相關的時間段,用mysqlbinlog可以將其轉換爲SQL,然後用grep爲相關表名稱找到您正在尋找的alter table聲明。

1

工具:

  • Maatkit。
  • 紅門的MySQL的架構&數據比較
  • 蟾蜍
  • SQLyog的
  • MySQL的DIFF

手冊:看到

首先檢查是否二進制啓用了日誌記錄:

show variable like 'log_bin'; 

然後,

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

轉到TEST.FILE看到的ALTER語句。