PostgreSQLを使用してアプリを構築中に詰まったことがあったのでメモを残す。
内容はstandard_conforming_stringsの設定についてです。
そもそも発生した事象は以下のとおりです。
PostgreSQLにSQLを流した場合にエラーコード22025のエラーが発生した。
内容としては無効なエスケープシーケンスが使用されたと言っている。
確かにかなり前のバージョンで使われていたSQLなので、バージョンによる問題なのかと調べると、9.1からバックスラッシュの取扱が変わっているとのこと。
それまでのバージョンはバックスラッシュはエスケープしてSQLが実行されるが、それ以降はエスケープされなくなったとのこと。(むしろこちらが標準仕様)
そこで追加された設定がstandard_conforming_stringsです。
追加されたのはバージョン8.1から
設定の違いは以下の通り。
9.1より低いバージョンではデフォルトoff、9.1以降はデフォルトonになる。
standard_conforming_strings=offと書くとエスケープが行われる(offでエスケープが実行されるので注意)
これを書いていて思うが、どれだけ前に作られたアプリをインストールしているんだろう…
それすらわからない。
参考ページ
http://blog.tokumaru.org/2011/09/postgresql.html