66
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

本番環境などでやらかしちゃった人Advent Calendar 2023

Day 15

DBeaverでやらかした話

Last updated at Posted at 2023-12-29

DBeaver最強

DBeaverは無料で使えるDBクライアントツールです。
めちゃめちゃ高機能なので、使っている人も多いのではないでしょうか。
ツールのバグが怖いから、コンソールでのコマンドでしかDBには接続しない 派の人もいるかと思いますが、私の場合は使いやすいSQLエディタや、見やすい結果セットがあった方が作業ミスが起きにくいと思っているので(むしろコマンドの方がミスる)、DBeaverは開発にも本番メンテナンスでもフル活用しています。

本番メンテナンス

ある時、イレギュラーな作業で、本番DBを直接いじることになりました。
大した作業ではなかったので手順書も作らずサクッとやることにしました。

エディタでクエリを準備

image.png

SELECTで現在のデータを確認と念のため記録

DBeaverの場合、エディタに複数SQLが書いてある場合、全て実行することもできますが、実行したいSQLのどこかにカーソルを置いてcontrol+EnterでそのSQLだけ実行できます

SELECTだけ実行

image.png

削除を実行

確認が取れたので、いよいよ削除実行です。
deleteのクエリにカーソルを置いて 実行っと・・・

image.png

全消し

データが削除されたか確認しようとしたところ、 一件だけ消すはずが全て消えてました
DBeaverのもう一つの便利機能で 選択した範囲のSQLを実行する 機能があります。
そう、カーソルを置いただけのつもりが、1行選択してしまっていて、 delete from members を実行してしまっていました。
しかも Auto commitモード ・・・。普段はトランザクションモードに切り替えてから実行するのですが、簡単な作業という油断からそれも忘れていました。

image.png

バックアップからすぐに復元できましたが、冷や汗をかきました。

教訓

  • デフォルトをトランザクションモードにしておく
  • 更新SQLは実行するまでコメントアウトしておく
    • 選択して control + / で簡単にIN/OUTできる
  • 実行前にカーソルの状況をよく確認する

願い

更新系SQLは実行するタイミングで 「〜のSQLを実行します。よろしいですか?」 とかSQL確認画面出してくれないかなあ。

66
43
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
66
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?