web-dev-qa-db-ja.com

MySQLでコミット後にロールバックする方法はありますか?

MySQLの 'where'句なしでテーブルを更新したという大きな間違いを犯しました: '(

自動コミットされます。

それからロールバックする方法はありますか?

24
Johnny Lim

いいえ、コミットされたデータ変更クエリを「元に戻す」クエリはありません。

データベースのバックアップがある場合は、バックアップを復元し、DBAツール(MySQLの場合は mysqlbinlog )を使用して、バックアップ以降のログからのすべてのデータ変更クエリを「再生」できます。データベースが、問題のクエリをスキップします。

バックアップとそのバックアップ以降のすべてのログがない場合、データを回復するためにできることは何もありません。

12
Bohemian

トランザクションログを検索します。詳細を更新しますが、ログは限られた時間しか存在しないため、時間が重要です!

参照: http://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery.html

1
Kyle

Mysql binlogを有効にしていて、行ベースの形式である場合、更新の前後に各行の値を取得できます。これを使用して、テーブルの状態を復元できます。

0