3

Pg を正しくセットアップしたと思いますが、スクリプトがデータベースに接続していないようです。私は以下でテストしています:

$database="networkem";
$user="postgres";
$password="";
$host="localhost";

$dbh = DBI->connect("DBI:Pg:dbname=$dbname;host=$host", $user, $password);

私の pg_hba の読み取り:

すべての postgres をホストする 127.0.0.1 255.255.255.255 信頼

psqlコマンドライン経由で問題なく使用でき、postmaster を -i オプションで起動しました。私は何が欠けていますか?

psql経由で正常に動作する別のユーザーでも試しました:

$user="ジンボ"; $password="p2ssw0rd";

pg_hba の読み取り:

すべてのジンボ 127.0.0.1 255.255.255.255 信頼をホストします。
4

4 に答える 4

11

セットアップをデバッグするために 20 の質問をするのではなくDBI->errstr、接続が失敗した理由を教えてくれます。

my $dbh = DBI->connect(...) or die DBI->errstr;

推測する必要がある場合は... Postgresはホストとログインユーザーに基づいて認証するため、Postgres接続に指定しているユーザー名とログインしているUnixユーザーの間に混乱があると思われます.

于 2008-12-20T23:29:43.330 に答える
1

私も同じ問題を抱えていました。「-hlocalhost」を試すための上記のヒントは、ネットワーク経由での接続に問題があることを確認しました。

以下をpg_hba.confに追加すると、問題が修正されました。

host all postgres 127.0.0.1/32 trust
于 2009-06-18T01:53:39.530 に答える
1

Schwern の優れた応答に加えて、postgresql.conf で選択されたオプションに応じて、何が間違っていたかについて多くのことを教えてくれる PostgreSQL ログを確認することもできます。

于 2008-12-21T21:01:34.003 に答える
0

コマンド ラインで「-i」を使用する代わりに、postgresql.conf で「listen_addresses」構成オプションを使用することをお勧めします。例えば:

listen_addresses = '*'

perl スクリプトを実行しているのと同じユーザーとして、次のコマンドを実行してみてください。

psql -U postgres -h localhost networkem

「-h localhost」は、Unix ソケット接続の代わりにネットワーク接続を強制します。そのコマンドが機能する場合、perl スクリプトも機能するはずです。

于 2009-01-10T06:09:09.500 に答える