dT*blog

design and programming

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のドライバを使うと、こういうエラーが起きるのか。こんなところでも微妙に変わってるのね。気をつけないと。

Posted by dT by 12:59

トラックバック

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

コメント




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30