2008年2月7日木曜日

tomcat 6.x によるCGI(Perl)+PostgreSQLに関して

前にTomcat6.xのWebサーバ機能でCGIの実行に関して書きましたが
一応CGI(自分が試したのはPerl)は動きました。

ただ、ActivePerlとdbd-pgを使ってPerl+PostgreSQLでデータベースを使おうとしたときに
エラーが出てきてしまいました。

エラーメッセージはこんな感じ

DBI connect('dbname=database','username',...) failed: could not translate host name "localhost" to address: Unknown host at CGIファイルのパス line データベースに接続している行番号

メッセージを見る限り、localhostをアドレスに変換できないとか言われてます。
別にhostsファイルを書き換えた覚えはないのですが…。
それでhostnameを'dbname=database;host=127.0.0.1'でアドレスで指定してみたのですが
同じように

...could not translate host name "127.0.0.1" to address:...

とエラーを吐かれました。
色々調べてみたのですがTomcatでCGI+PostgreSQLを使ってることが圧倒的に少ないのか
分かりませんでした。

このPerl自身が悪いのかと思いましたがApacheで実行してみると普通にうまくいくので
Perlコードには問題はないと思います。
Tomcat5.xで実行するとどうなるかは面倒くさいので試してませんが、

結局CGIを実行するのはApacheにしておいた方が無難ってことですかね。
もし普通に
Tomcat6.x + Perl + PostgreSQL
で動いたぞという方がいましたら教えてください。