ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

新たなデータを作ることによって発覚したバグ

わかれば簡単な内容でした。

f:id:AJYA:20140710051207j:plain
photo credit: Andréia via photopin cc

開発環境構築

PHPSQL Serverで構築された既存のWebシステムを改造する案件で、デモ環境をコピーして開発をしていました。
なるべく開発環境構築の手間をかけたくなかったので、プログラムはディレクトリをコピーして別ディレクトリを作成しました。
データベースはバックアップして、同一インスタンスに別データベースとしてリストアしました。

バグ発覚

部下の開発が終わったというのでチェックを始めました。
ある機能を確認すると、開発環境構築前から使っていたアカウントでは正常に動作しているのが、新しく作ったアカウントでは正常に動作しいません。
検索結果として2件表示されるはずが、1件も表示されない状態です。
検索部分はPHPのプログラム上ではなく、SQL Serverのストアドプロシージャが関係しているので見てみると、以前とは1箇所だけ修正していました。

原因調査

修正箇所のSQLの動作を確認すると、正しく動作していることが確認できました。
ストアドプロシージャ上の次のSQLを確認すると、期待した結果とは異なったため、この部分が原因だと判断できました。
判断はできましたが、以前のままで修正はしていないため、理由がよくわかりません。

原因となっているSQLを操作しながら理由を考えていると、

[db1].[dbo].[tabel1]

と書いてある部分に目が止まりました。
開発環境として構築したデータベース名は、db1_testとしています。

[db1_test].[dbo].[tabel1]

に直したら、期待通りの動作になりました。

対策

既存のデータベースをコピーして、同一インスタンスにリストアして開発環境を構築したために、ストアドプロシージャは別のデータベースを参照していました。
そのため、以前から使っていたアカウントは別のデータベースを参照して該当する結果があったため、正常に動作しているように見えました。
新しいアカウントではデータがなかったためにバグが発覚しました。

[db1_test].[dbo].[tabel1]

の部分は、

tabel1

にしても期待通りの動作をしたので、該当箇所をすべて修正しました。