DBeaver最強
DBeaverは無料で使えるDBクライアントツールです。
めちゃめちゃ高機能なので、使っている人も多いのではないでしょうか。
ツールのバグが怖いから、コンソールでのコマンドでしかDBには接続しない 派の人もいるかと思いますが、私の場合は使いやすいSQLエディタや、見やすい結果セットがあった方が作業ミスが起きにくいと思っているので(むしろコマンドの方がミスる)、DBeaverは開発にも本番メンテナンスでもフル活用しています。
本番メンテナンス
ある時、イレギュラーな作業で、本番DBを直接いじることになりました。
大した作業ではなかったので手順書も作らずサクッとやることにしました。
エディタでクエリを準備
SELECTで現在のデータを確認と念のため記録
DBeaverの場合、エディタに複数SQLが書いてある場合、全て実行することもできますが、実行したいSQLのどこかにカーソルを置いてcontrol+EnterでそのSQLだけ実行できます
SELECTだけ実行
削除を実行
確認が取れたので、いよいよ削除実行です。
deleteのクエリにカーソルを置いて 実行っと・・・
全消し
データが削除されたか確認しようとしたところ、 一件だけ消すはずが全て消えてました 。
DBeaverのもう一つの便利機能で 選択した範囲のSQLを実行する 機能があります。
そう、カーソルを置いただけのつもりが、1行選択してしまっていて、 delete from members を実行してしまっていました。
しかも Auto commitモード ・・・。普段はトランザクションモードに切り替えてから実行するのですが、簡単な作業という油断からそれも忘れていました。
バックアップからすぐに復元できましたが、冷や汗をかきました。
教訓
- デフォルトをトランザクションモードにしておく
- 更新SQLは実行するまでコメントアウトしておく
- 選択して
control + /
で簡単にIN/OUTできる
- 選択して
- 実行前にカーソルの状況をよく確認する
願い
更新系SQLは実行するタイミングで 「〜のSQLを実行します。よろしいですか?」 とかSQL確認画面出してくれないかなあ。