随分以前から運用しているシステムでテーブルに項目を追加しなければいけない追加機能の要請があった。
取り敢えず、テーブルに必要な項目を追加して動作確認。
OKだったので、他の修正を含めて取説を書く為に動作確認中、修正箇所とは関係ないと思われる場所で何故かSQLの問い合わせが返ってこない箇所を発見した。
該当する箇所にエラートラップを仕掛けて、何の不具合が発生しているのか調べるとambiguousが出ている。
これはsqlの定義が曖昧だという意味だが、「あ!」と思った。
追加した項目と同じ名前の項目名を別のテーブルで使っていて、丁度joinで接続した問い合わせをしている箇所があったのだ。
だいたい構造を変更する場合は用心しないといけないのだが、うっかり適当な名前を付けた事で、違う場所へ影響が出てしまったのだ。
すぐにテーブルの項目名を変更して、必要な箇所を修正すると正常に稼働した。
僕はこの様な項目名の変更やタイプミスが無い様にデータベースのテーブル名は絶対ハードコーディングせずに配列で設定して、sqlも全て配列を参照して作成するようにしているので、こう言う事態でも修正箇所が少なく分かりやすく、これが幸いした様だ。
幸いリリースする前で良かったが、これだから製作から暫く期間が空いたシステムの修正は嫌いだ(-_-;)