PostgreSQLのWhrere時の型チェックの厳密化

CakePHPでDBはPostgreSQLのサイトがある。
そちらを移転作業したときに起きた問題

動作チェック中に下記のエラーが発生

HINTから情報を検索するとPostgreSQLのバージョンで検索(Where)のキャスト(型)のチェックが厳密化されたようです。

今回はPostgreSQL7.4.23 → 9.2.10

厳密化は8.3からのようです。
キャストの厳密化とは検索するときにフィールドの型を厳密にチェックするようです。
今までのバージョンは型を自動で変換してくれていたようですが、8.3からはそれを行わないとのこと

それらがNGとのこと

私のプログラムのエラーはdate型にLIKE検索をしているのがNGでした。

対策としてはFunctionとCastを作成してそれで型の変換をさせる方法があるようですが、
次の移転時にまた困るような気がしたので、今回はプログラム側の修正を行いました。
(プログラムの修正箇所が少なかったため)

CakePHPを使っているのですが下記の修正ではエラーでした。

array(“date::text”=>”2017-11%”)

ということで、ちゃんと関数で変換します。

エラーなく検索結果が返ってきたらOK

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA