Web + Life Hack

〜True But Useless〜

【Rails】【MySQL】【テスト】限りなく生データに近いデータを使うためにやったこと




現在、テストを実施していますが、出来るだけテスト用のデータは作りたくないと思い、
定期的に作成している「dump」ファイルで一気に本番環境のデータを
テスト環境のDBに入れています。
もちろん、本番環境であるためテスト環境のDBヘ挿入後は
しかるべき修正が必要です。

その際、案外、見落としがちなのが
「emailアドレス」です。

そして特定データだけ有効でないemailアドレスに変更するというのも
効率が悪く、抜け漏れが発生するかと思い、
一気に有効でないemailアドレスに変更しました。

その際に行った作業は以下の通りです。

前提条件;dumpファイルでデータが挿入済みであること


1・カラムに「email」とあるテーブルを特定する。

Railsの場合ですとマイグレーションファイルにてテーブルの作成を行いますので、
私はマイグレーションファイルから抽出しました。

cd db/migrate
grep '%email%' *.*

2・emailアドレスを更新する。

mysql -u root  -p g08m11

update campaign_entry_users set email = concat('campaign_entry_user', id, '@g08m11.com') where email is not null and email <> '';

g08m11というDBを使用するMySQLにrootユーザーでログインした後以下の内容のSQLを実行しています。

・campaign_entry_usersというテーブルのemailを更新
・更新する値はテーブル名(camapaign_entry_users)と主キー(id)とドメイン名(@g08m11.com)
を文字連結した値
・条件はemailカラムがnullではないまたは、空白文字でないレコード

不要な文字とは言ってもどんな値にすれば迷っている方は
concat('対象テーブル',主キー,'不要なメアド')を選択肢の一つにしても良いかと思います。

テストデータの作成に困っている方の助けになれば幸いです。