operator does not exist: integer !=- integer

久しぶりに NetBeans で開発してみようかと思って、Tomcatを起動して動かしてみたら、こんなエラーを吐いて落ちる。なんでじゃ。APサーバー上では動いているのに。

org.postgresql.util.PSQLException: ERROR: operator does not exist: integer !=- integer

コンパイルに失敗したかなーと思って、JDKを替えて再構築するも状況は変わらず。よくよくエラー部分を見ると、SQLのパースで落ちている。とは言え、「!=-」なんて意味不明な演算子なんぞ使った覚えないんですがねー。むむむ。

んで、該当のSQLを見てみると、こんな記述。

WHERE group_id!=?

どうやら PreparedStatement でパラメータに負数が入ると落ちるということらしい。そんなことあるのか。どんなパースだ。でもAPサーバーでは動いているということは、開発環境の問題なのかな。うーむ。

環境の問題でハッと気付いたんだけど、原因はドライバーのバージョン違い。

%TOMCAT_HOME%/common/lib 以下にあるDBドライバの jar ファイルを、DBのバージョンに合わせたらバッチリ動きました。そこかー、忘れてたー!プロジェクトの WEB-INF/lib に jarファイルがあると、それでOKな気持ちになっちゃうんだよなあ。Tomcatの方の common/lib のことなんざ、キレイサッパリ忘れてましたよ…。

PostgreSQL8.1に7.4のドライバを使うと、こういうエラーが起きるのか。こんなところでも微妙に変わってるのね。気をつけないと。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/390