同様に、SHOW CREATE TABLE tblname; ALTER TABLE クエリの SQL を表示する方法はありますか? 助けてください?
3 に答える
1 つの小さな説明:show create table
実際には「以前に実行されたものを戻す」わけではありません。テーブルをゼロから作成する DDL が表示されるだけです。テーブルは何度も作成されてから変更されている可能性がありますがshow create table
、テーブルの現在の状態を反映しています。
最近テーブルで実行されたステートメントを見つけることに関してalter table
は、最善の策はバイナリ ログです。
最初に、バイナリ ログが有効になっているかどうかを確認します。
show variable like 'log_bin';
そうである場合は、関連する期間のバイナリ ログを見つけ、mysqlbinlog を使用してそれを SQL に変換し、関連するテーブル名を grep して、探しているalter table
ステートメントを見つけます。
ツール:
- マーキット。
- Red-Gate の MySQL スキーマとデータ比較
- ヒキガエル
- SQLヨグ
- MySQL 差分
マニュアル:
最初に、バイナリ ログが有効になっているかどうかを確認します。
show variable like 'log_bin';
それで、
mysqlbinlog /var/log/mysql/mysql-bin.000001 | grep 'alter table *tablename*' > test.file
test.file に移動して、alter ステートメントを確認します。
MySQL インスタンスのロギングが有効になっている場合は、ログを表示できます。これが最良の選択肢です。
システムの履歴がオンになっている場合は、同じシステムからクライアント バックアップを開始して、上向き矢印を試すことができます。そこにコマンドが表示される場合があります。
コマンドを実行したユーザーを知っていて、たまたまコマンドラインから直接実行した場合、同じ履歴トリックが機能する可能性があります。