我相信我已经正确地设置了Pg,但是我的脚本似乎没有连接到数据库。我正在测试:
$database="networkem";
$user="postgres";
$password="";
$host="localhost";
$dbh = DBI->connect("DBI:Pg:dbname=$dbname;host=$host", $user, $password);
我的pg_hba显示为:
host all postgres 127.0.0.1 255.255.255.255 trust
我可以通过命令行很好地使用psql
,并且已经用-i选项启动了postmaster。我错过了什么?
我还尝试了另一个通过psql工作正常的用户:
$user="jimbo"; $password="p2ssw0rd";
pg_hba阅读为:
host all jimbo 127.0.0.1 255.255.255.255 trust
5条答案
按热度按时间piwo6bdm1#
DBI->errstr
将说明连接失败的原因,而不是播放20个问题来调试您的设置。不过,如果我不得不猜测的话......由于Postgres是基于主机和登录用户进行身份验证的,我怀疑混淆在于您给Postgres连接的用户名和您登录的Unix用户名之间。
dgsult0t2#
除了Schwern的优秀响应,您还可以检查PostgreSQL日志,根据postgresql.conf中选择的选项,它可能会告诉您很多关于什么是错误的。
mftmpeh83#
建议您在postgresql.conf中使用'listen_addresses'配置选项,而不要在命令行中使用'-i'。例如:
尝试以运行perl脚本的同一用户身份执行以下命令:
“-h localhost”命令强制网络连接而不是Unix套接字连接。如果该命令有效,那么您的perl脚本也应该有效。
thtygnil4#
我也遇到了同样的问题。上面尝试“-h localhost”的提示确认了我在网络连接上遇到了问题。
将以下内容添加到pg_hba.conf中解决了这个问题。
7ajki6be5#
DBI可能连接到IPv4或IPv6 postgresql服务器接口,具体取决于配置方式。
因此,您可能需要pg_hba.conf中的这两行代码:
IPv4协议:
IPv6协议: