久々にPostgreSQLの話です。プリペアードクエリのprepare文のエラーで次のようなエラーに出くわす事があります。
ERROR: inconsistent types deduced for parameter $8 DETAIL: timestamp without time zone versus text
パラーメタの番号は振り直している、と思い込んでいたのでこのエラーメッセージを見ても何故だろう状態なり、しばらく悩んでしまいました。ググってみても役に立ちそうなページが一つも無かったので書いておきます。
create table test (
t text,
i int
);
のテーブルの場合に
pg_prepare(‘testplan’, ‘select * from test where t = $1 and i = $1;’);
等とすると(pg_prepqreはPHP 5.1の関数)
ERROR: inconsistent types deduced for parameter
エラーが発生する、はずだったのですがこの例の場合はPostgreSQL 8.0.7で試してみてもエラーが発生しませんでした。自動的にキャストしてしまうのかな?調べてません。
とにかくこのエラーはプリペアードクエリの同じパラメータが互換性のコラムに利用された場合に発生するエラーです。
エラーメッセージが読んで字の如しなので有用なページが無いのでしょうね。