【新人向け】MySQLでコミット後に変更を元に戻すには?やさしく解説!

こんにちは。ゆうせいです。
「間違ってコミット(COMMIT
)しちゃった…どうしよう…」
そんなふうに焦ったことはありませんか?
今回は、MySQLでコミットした後に変更を元に戻す方法について、
新人エンジニア向けに、基本から丁寧に説明していきます!
そもそも「コミット」ってなに?
まず最初に、「コミット(COMMIT
)」とは何かを確認しましょう。
コミットとは、「今までの変更を確定すること」です。
たとえば、データを追加したり、修正したり、削除したりしたあとに、
COMMIT;
と書くことで、その変更はデータベースに永久に保存されます。
一度コミットすると、その変更は確定して、元に戻すことが基本的にはできなくなります。
じゃあ、どうやって「戻す」の?
残念ながら、コミット後はROLLBACK
できません!
MySQLには「ROLLBACK
(ロールバック)」というコマンドがあり、
コミット前であれば、このコマンドで変更を取り消すことができます。
ROLLBACK;
でも注意!
COMMITの後にROLLBACKしても、変更は戻りません。
たとえるなら、「保存前の文書なら元に戻せるけど、保存しちゃったら元には戻せない」ようなものです。
じゃあもうダメなの?実は方法はある!
コミットしてしまった後でも、次のような方法で対応できることがあります。
方法1:バックアップからリストアする
もし定期的にバックアップ(dump)を取っていれば、
コミット前の状態に戻せる可能性があります。
mysql -u user -p database_name < backup.sql
これは「保存しておいたデータを読み込む」イメージです。
ただし、直近の変更しか含まれていないときは意味がないかもしれません。
方法2:逆操作(逆クエリ)を手動で行う
たとえば、間違って以下のような削除をしたとします。
DELETE FROM users WHERE id = 5;
COMMIT;
この場合、データはもう元に戻せません。ですが、その削除内容を記録しておけば、
以下のように手動で「元に戻す操作」ができます。
INSERT INTO users (id, name, email) VALUES (5, '山田太郎', 'yamada@example.com');
つまり、「何をしたか」をちゃんと把握できていれば、元に戻す“逆クエリ”を自分で書くことができるんですね。
防ぐための工夫:やらかす前にできること
新人エンジニアにとって一番大事なのは、ミスを防ぐ習慣をつけること!
以下のような対策をおすすめします:
対策 | 説明 |
---|---|
トランザクションで区切る | START TRANSACTION → COMMIT を手動で操作する |
本番環境では慎重に | ローカルで検証してから、本番に反映する |
バックアップを定期的に取る | 万が一のときに備えておく |
クエリログを残す | 何を実行したのかあとで確認できるようにする |
まとめ
COMMIT
は変更を確定するコマンドROLLBACK
はコミット前なら変更を元に戻せる- コミット後に元に戻すには:
- バックアップを使ってリストアする
- 逆クエリ(取り消し操作)を手動で書く
- ミスを防ぐにはトランザクションの習慣化とバックアップがカギ!
今後の学習の指針
START TRANSACTION
,COMMIT
,ROLLBACK
の流れを実際に手を動かして試そう!- 誤操作防止のための「セーフモード」や「クエリログ」の設定も調べてみよう!
- 本番環境で使うときの運用ルール(レビュー、確認フローなど)も勉強してみよう!
操作は慎重に!そして学びは確実に!自信を持って一歩ずつ進んでいきましょう!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。