君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

本番環境にテストデータを入れてしまったときは、deleteではなくtruncateでテーブルからレコードを一掃しよう〜deleteとtruncateの違い〜

いきさつ

社内で使用するシステムの開発が一旦落ち着いたので、

本番環境構築することになった。

といってもすでにテスト環境を構築しているので、

慣れたものである。

種々のインスタンスを立ち上げ、ansible用のユーザを作成し、

playbookの諸々の設定位置を少し書き換ええ、流すだけで良い。

(playbook、つくるのは大変だった)

で、いつものように本番環境にデプロイし終わり

きちんと登録できるか一通りの操作をした。

そこで先輩が一言

「本番環境上に作ってしまったデータは残してはいけないから、

きちんとtruncateしといてね」

僕はハッとした

当たり前だが、その一言に僕はハッとさせられた。

基本的に本番環境はまっさらな状態で、お客さんに使ってもらう。

使ってもらう時、

私たち開発者がテスト用に打ったゴミデータが入っていると、

アカウント管理をしているとはいえ、

万が一そのゴミデータのせいでバグが起こりうる場合もある。

(そもそも本番環境なので、

 テストデータが紛れ込んでいると言うのはおかしい、というのもある)

なので

テストデータは消しておく必要がある。

そのときに注意しておくのがdeleteとtruncateの違いだ。

deleteとtruncateの違い

idがauto_incrementになっていた場合、

deleteは連番情報を保持したまま。

truncateは1から裁判し直す。

という違いがある。

まっさらな状態にする、という意味ではtruncateが適している。

まとめ

本番環境の扱いには気をつけよう。