PHP?Oracle??でハマる。

OracleのテーブルをUPDATEするメソッドを作っていたときの話。
トランザクションが始まると
トランザクションを開始しました」
というログが吐かれるようになっているのですが、そのログが

トランザクションを開始しました」
トランザクションを開始しました」
トランザクションを開始しました」
トランザクションを開始しました」
トランザクションを開始しました」
トランザクションを開始しました」

のように無限ループ的に吐かれて、結局、UPDATE文は実行されずに落ちてしまう、
という現象が起こりました(゚Д゚)!!!


自力で解決をするのが難しいと思ったので、以前に似たようなシステムを
作っていた人に聞いてみたところ、
「DAOのメソッド名と、DAOで呼んでいるSQL名とが同じになっていませんか?」
と言われました。

$DAO->methodChoo();


methodA(){
// SQL実行
$this->methodChoo();
}

…となっていたところを、

$DAO->methodChoo();


methodA(){
// SQL実行
$this->methodChooSql();
}

…と修正したところ、上記の妙な現象は起こらなくなりました(・∀・)



今回携わったシステム独自の仕様とは言え、他のシステムでも同じようにハマるかも
しれないので、念のため書いておくことにしました。