58

誤ってテーブルから膨大な数の行を削除してしまいました...

どうすればロールバックできますか?

PuTTYを使用してクエリを実行しました。

誰かが私を安全に導いてくれるなら、私は感謝します...

4

10 に答える 10

101

バックアップを作成していない場合は、かなりごまかされています。

于 2010-03-01T14:50:57.087 に答える
35

まだトランザクションをコミットしていない場合は、試してくださいrollback。すでにトランザクションをコミットしている場合 (手動で実行するcommitか、コマンド ライン クライアントを終了するか、オプションautocommit1デフォルトの場合)、最後のバックアップからデータを復元する必要があります。

今後そのようなことを防ぐためSET autocommit=0に、危険な作業の前に使用してください。変更は、コミットするまで現在のトランザクション内に保持されます。詳細については、 https://dev.mysql.com/doc/refman/8.0/en/innodb-autocommit-commit-rollback.htmlを参照してください。

于 2010-03-01T14:52:20.640 に答える
13

「ロールバック」は、トランザクションを使用した場合にのみ機能します。こうすることで、クエリをグループ化し、そのうちの 1 つだけが失敗した場合にすべてのクエリを元に戻すことができます。

しかし、すでにトランザクションをコミットした (または通常の DELETE クエリを使用した) 場合、データを元に戻す唯一の方法は、以前に作成したバックアップからデータを復元することです。

于 2010-03-01T14:54:01.273 に答える
4

受け入れられた答えが常に正しいとは限りません。MySQL でバイナリ ログを構成すると、スナップショットと binlog がまだ残っている以前のポイントにデータベースをロールバックできます。

7.5 ポイントインタイム (増分) リカバリ バイナリ ログを使用することは、この機能について学習するための出発点として適しています。

于 2015-02-16T16:57:22.577 に答える
-1

ロールバックは通常、これらの削除機能では機能せず、確かにバックアップだけがあなたを救うことができます.

バックアップがない場合、PuTTY で実行された削除クエリとして復元する方法はありません。.sql ファイルを使用する Derby は、削除クエリを起動すると自動的にコミットされます。

于 2013-08-21T11:30:23.487 に答える