3

我相信我已经正确设置了 Pg,但我的脚本似乎没有连接到数据库。我正在测试:

$database="networkem";
$user="postgres";
$密码="";
$host="本地主机";

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

我的 pg_hba 内容如下:

托管所有 postgres 127.0.0.1 255.255.255.255 信任

我可以psql通过命令行很好地使用并使用 -i 选项启动 postmaster。我错过了什么?

我还尝试了另一个可以通过 psql 正常工作的用户:

$user="jimbo"; $password="p2ssw0rd";

使用 pg_hba 阅读:

托管所有 jimbo 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

除了 Schwern 的出色响应之外,您还可以查看 PostgreSQL 日志,根据在 postgresql.conf 中选择的选项,它可能会告诉您很多关于哪里出了问题。

于 2008-12-21T21:01:34.003 回答
1

我遇到过同样的问题。上面尝试“-h localhost”的提示证实我在通过网络连接时遇到问题。

将以下内容添加到 pg_hba.conf 解决了该问题。

host all postgres 127.0.0.1/32 trust
于 2009-06-18T01:53:39.530 回答
0

建议您在 postgresql.conf 中使用“listen_addresses”配置选项,而不是在命令行中使用“-i”。例如:

listen_addresses = '*'

尝试以与您运行 perl 脚本的用户相同的用户身份执行以下命令:

psql -U postgres -h localhost networkem

'-h localhost' 强制使用网络连接而不是 Unix 套接字连接。如果该命令有效,您的 perl 脚本也应该有效。

于 2009-01-10T06:09:09.500 回答