我有这个perl脚本
wrapper.pl
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long;
use DBI;
# input params
my $end;
my $start;
my $url;
my @IP;
my $host = "localhost";
my $dbname = "flows";
my $username;
my $pass;
GetOptions ("s|start=s" => \$start,
"e|end=s" => \$end,
"r|url=s" => \$url,
"ip|iplist=s" => \@IP,
"h|host=s" => \$host,
"db|dbname=s" => \$dbname,
"u|username=s" => \$username,
"p|pass=s" => \$pass);
# connect and send request to database
my $dbh = DBI->connect("DBI:Pg:dbname=".$dbname.";host=".$host, $username, $pass, {'RaiseError' => 1});
当我跑步时
./wrapper.pl -h 10.0.0.3
我明白了:
DBI connect('dbname=flows;host=10.0.0.3','',...) failed: could not connect to server: No route to host
Is the server running on host "10.0.0.3" and accepting
TCP/IP connections on port 5432?
我可以ping服务器,它也应该接受5432上的连接。 我是否因为登录凭证错误而收到此消息?
答案 0 :(得分:0)
首先,您应use DBD::Pg;
之后use DBI;
其次,添加DBI->errstr
以获得更正确的错误
我的$ dbh = DBI-> connect(“DBI:Pg:dbname =”。$ dbname。“; host =”。$ host, $ username,$ pass,{'RaiseError'=> 1})或死DBI-> errstr;
第三,您应该能够在从DBI进行triyng之前从命令行连接到psql
psql -h 10.0.0.3 -U username -d dbname -p 5432
(请检查语法)