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

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

突然、pg_fetch_array(): Unable to jump to row 0 on PostgreSQL result・・・と表示されて焦る

Webのシステムに、cronによる定期実行を行う機能の追加が必要になりました。
テスト用の環境でコードを書いて、Terminalから、PHPファイルを指定して実行すると、
pg_fetch_array(): Unable to jump to row 0 on PostgreSQL result・・・
とエラーメッセージが表示されました。

新しく書いたコードが正しくなくてエラーが出ているのなら簡単です。
エラーメッセージの一部として、行番号も表示されているの、表示されている行番号のコードを見ながら原因を探せば済みます。

エラーが発生している行番号は、Webのシステムで、これまで使っていたメソッドを示しています。

cronによる定期実行を行う機能で利用したい定数やメソッドが定義されているので、利用したところ、エラーが発生しています。
これまでWebのシステムで利用していてエラーがないのが、cronによる定期実行を行う機能で利用するとエラーになるのか、少しの時間悩んで、理由がわかりました。

ソースコード
Photo by Christopher Gower on Unsplash

Webのシステムにおいて、テスト環境か本番環境を判定して、データベースの接続先もテスト用と本番用を切り替えています。
Webのシステムであれば、テスト環境か本番環境を判定できる方法で判定していたので、Webのシステムではない、cronによる定期実行を行う機能で利用すると、テスト環境か本番環境を正しく判定できていないために発生していました。

対処として、Webのシステムの場合、cronによる定期実行を行う場合のどちらでも、テスト環境か本番環境を正しく判定できる方法があるので、これまで使っていたメソッドに渡す値を、正しい判定結果から決定するように修正したら、エラーメッセージは表示されなくなりました。


これまでエラーメッセージが表示されていなかったのが表示されると、焦ります。