誤ってテーブルから膨大な数の行を削除してしまいました...
どうすればロールバックできますか?
PuTTYを使用してクエリを実行しました。
誰かが私を安全に導いてくれるなら、私は感謝します...
バックアップを作成していない場合は、かなりごまかされています。
まだトランザクションをコミットしていない場合は、試してくださいrollback
。すでにトランザクションをコミットしている場合 (手動で実行するcommit
か、コマンド ライン クライアントを終了するか、オプションautocommit
が1
デフォルトの場合)、最後のバックアップからデータを復元する必要があります。
今後そのようなことを防ぐためSET autocommit=0
に、危険な作業の前に使用してください。変更は、コミットするまで現在のトランザクション内に保持されます。詳細については、 https://dev.mysql.com/doc/refman/8.0/en/innodb-autocommit-commit-rollback.htmlを参照してください。
「ロールバック」は、トランザクションを使用した場合にのみ機能します。こうすることで、クエリをグループ化し、そのうちの 1 つだけが失敗した場合にすべてのクエリを元に戻すことができます。
しかし、すでにトランザクションをコミットした (または通常の DELETE クエリを使用した) 場合、データを元に戻す唯一の方法は、以前に作成したバックアップからデータを復元することです。
受け入れられた答えが常に正しいとは限りません。MySQL でバイナリ ログを構成すると、スナップショットと binlog がまだ残っている以前のポイントにデータベースをロールバックできます。
7.5 ポイントインタイム (増分) リカバリ バイナリ ログを使用することは、この機能について学習するための出発点として適しています。
ロールバックは通常、これらの削除機能では機能せず、確かにバックアップだけがあなたを救うことができます.
バックアップがない場合、PuTTY で実行された削除クエリとして復元する方法はありません。.sql ファイルを使用する Derby は、削除クエリを起動すると自動的にコミットされます。