inconsistent types deduced for parameter

Computer, Development 4月 15, 2006 #PHP
(Last Updated On: 2018年8月14日)

久々に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で試してみてもエラーが発生しませんでした。自動的にキャストしてしまうのかな?調べてません。

とにかくこのエラーはプリペアードクエリの同じパラメータが互換性のコラムに利用された場合に発生するエラーです。

エラーメッセージが読んで字の如しなので有用なページが無いのでしょうね。

投稿者: yohgaki