tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

本番環境のDBを手修正するとき

間違いなく、バッドノウハウだけど、これを聞いたときは目から鱗だったのでメモメモ。

本番環境の DB を直接いじることがあるとします。

Navicat とか、MySQL Query Browser とか、pgadmin とか、Oracle SQLDeveloper とか、そういうツールが使えればあんまり気にしないでも良いかもしれない。

でも、セキュリティポリシー(笑)で、データベースへのネットワーク接続が許可されていない、ということがありえます。頼れるのは、由緒正しきコマンドラインインターフェースのみ。

で、こういうときのやり方なのですが、

  1. Start Transaction;
  2. select 文を叩いて、where 句を決める
  3. update/delete を発行(上の where 句を使うこと)
  4. もいっかい 同じ select 文を叩く
  5. データチェック
    1. うまく行ってれば Commit;
    2. 失敗なら Rollback

とするのが良いらしい。

自分の中では、「コマンドライントランザクションをかける」ってのが結構斬新でした。これって常識なんですかね?
# 「そもそも本番DBを直接いじるのが非常識だろ」という批判は置いとくとして。