dポイントプレゼントキャンペーン実施中!

perlからDBIを使用して、データベースにアクセスしたいと思っていますが、connectで下記のようなエラーが出力され接続できません。
↓↓↓↓↓↓apacheのエラーログ↓↓↓↓↓↓↓
DBI connect('dbname=[mscdb]','[postgres]',...) failed: FATAL: database "[mscdb]" does not exist
at /web/member/cgi-bin/dbitest.pl line 8
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
mscdbがないとエラーが出力されているように思いますが、mscdbは存在します。どういった原因が考えられるでしょうか?


プログラムには以下のように記述しています。
#!/usr/bin/perl
use DBI;

use constant DBNAME => 'DBI:Pg:dbname=[mscdb]';
use constant DBUSER => '[postgres]';
use constant DBPASS => '[××××]';

DBI->connect( DBNAME, DBUSER, DBPASS, { AutoCommit => 0 });

print "Content-Type: text/plain\n\n";
print $DBI::errstr? $_: 'Done';


環境は以下の通りです。
   perl v5.8.2
   postgres v8.1.2
vine linux
dbd v1.49

A 回答 (2件)

postgresqlのpg_hba.confにてどのような接続形態を許可していますか。


また、postmasterの起動オプションはどうなっているでしょうか。

この回答への補足

(1)pg_hba.confは、以下のようにしています。
 Webサーバと、DBサーバは同一のマシンに格納していますので、localhostからの接続は、許可しました。
# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
#host all all 127.0.0.1/32 trust
# IPv6 local connections:
#host all all ::1/128 trust

host all all 192.168.1.0/24 trust
host all all 192.168.3.0/24 trust
host all all 192.168.4.0/24 trust
host all all 127.0.0.1 255.255.255.255 trust

(2)postgresは、マシン起動時にあがるようにinit.dに以下のようなファイルを置き起動しています。
#!/bin/sh
#
# PostgreSQL start and shutdown script
#
# chkconfig: 345 90 11
# description: PostgreSQL start and shutdown script

. /etc/init.d/functions

case "$1" in
start)
su - postgres -c "pg_ctl -l /usr/local/pgsql/log/log${$}.txt -D /usr/local/pg
sql/data/ -o \"-S -i\" start"
touch /var/lock/subsys/postgres
;;
stop)
su - postgres -c "pg_ctl stop -D /usr/local/pgsql/data/ -m fast"
rm -f /var/lock/subsys/postgres
;;
*)
echo "Usage: /etc/rc.d/init.d/postgres {start|stop}"
esac

補足日時:2006/08/23 14:07
    • good
    • 0

もしデータベースの名前が "[mscdb]" でなく "mscdb" ならば


dbname=mscdb
と書きますが、そこは大丈夫でしょうか。ユーザ名とパスワードも同様です。

この回答への補足

[mscdb]をmscdbに修正したら正常に動きました。
お恥ずかしい限りです(--)ありがとうございます!!

補足日時:2006/08/23 14:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!