Thread: prob with PERL/Postgres

prob with PERL/Postgres

From
"Kristopher Yates"
Date:
PERL SNIPPET:

# build arrays from file (OMITTED)

use Pg;
$dbhost='127.0.0.1';
$dbname='mpact';
#$connstr="dbname=$dbname";
$connstr="host=$dbhost dbname=$dbname";
$conn = Pg::connectdb($connstr);

#more code related to date omitted
   $result=$conn->exec($sql);   (PGRES_COMMAND_OK eq $result->resultStatus)   or  die $conn->errorMessage;

WHY DO I GET PQsendQuery() -- There is no connection to the 
backend.  I have tried leaving host blank, using IP 127.0.0.1 and 
hostname localhost.  This script should work - the problem is 
something with postgres but I dont know what.  Any ideas out 
there?  Thanks,  Kris


Re: prob with PERL/Postgres

From
Kate Collins
Date:
I use the Perl DBI module to connect to a postgres data base on the local
system.  I don't specify the host name.  This is the syntax I use to connect to
the data base:

use DBI;

$dbname = "foo";
$connstr = "dbi:Pg:dbname=$dbname";
$dbh = DBI->connect($connstr);

Kristopher Yates wrote:

> PERL SNIPPET:
>
> # build arrays from file (OMITTED)
>
> use Pg;
> $dbhost='127.0.0.1';
> $dbname='mpact';
> #$connstr="dbname=$dbname";
> $connstr="host=$dbhost dbname=$dbname";
> $conn = Pg::connectdb($connstr);
>
> #more code related to date omitted
>
>     $result=$conn->exec($sql);
>     (PGRES_COMMAND_OK eq $result->resultStatus)
>     or  die $conn->errorMessage;
>
> WHY DO I GET PQsendQuery() -- There is no connection to the
> backend.  I have tried leaving host blank, using IP 127.0.0.1 and
> hostname localhost.  This script should work - the problem is
> something with postgres but I dont know what.  Any ideas out
> there?  Thanks,  Kris
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html


--
=================================================
Katherine (Kate) L. Collins
Senior Software Engineer/Meteorologist
Weather Services International (WSI Corporation)
900 Technology Park Drive
Billerica, MA 01821
EMAIL: kcollins@wsi.com
PHONE: (978) 262-0610
FAX: (978) 262-0700
http://www.intellicast.com




Re: prob with PERL/Postgres

From
clayton
Date:
Kristopher Yates wrote:

>PERL SNIPPET:
>
># build arrays from file (OMITTED)
>
>use Pg;
>$dbhost='127.0.0.1';
>$dbname='mpact';
>#$connstr="dbname=$dbname";
>$connstr="host=$dbhost dbname=$dbname";
>$conn = Pg::connectdb($connstr);
>
>#more code related to date omitted
>
>    $result=$conn->exec($sql);
>    (PGRES_COMMAND_OK eq $result->resultStatus)
>    or  die $conn->errorMessage;
>
>WHY DO I GET PQsendQuery() -- There is no connection to the 
>backend.  I have tried leaving host blank, using IP 127.0.0.1 and 
>hostname localhost.  This script should work - the problem is 
>something with postgres but I dont know what.  Any ideas out 
>there?  Thanks,  Kris
>
>---------------------------(end of broadcast)---------------------------
>TIP 5: Have you checked our extensive FAQ?
>
>http://www.postgresql.org/users-lounge/docs/faq.html
>
>

have you checked your /etc/host file?
as well is your loopback on ?

what about your pg_hba.conf
it should probably have ,by default:
---pg_hba.conf----
# By default, allow anything over UNIX domain sockets and localhost.
local        all                                           trust
host         all         127.0.0.1     255.255.255.255     trust
---pg_hba.conf----
you can use stonger security consult the Pg docs on that!
its been a while since ive looked at them


here is how i connect::

#!/usr/bin/perl
use strict;
use warnings;
use Pg;
my $command="select * from write;";
my $conninfo = "dbname=write  user=www password=Apache1312 host=localhost";
my $conn = Pg::connectdb($conninfo);
if (Pg::PGRES_CONNECTION_OK == $conn->status){
my  $result = $conn->exec($command);
if (Pg::PGRES_TUPLES_OK == $result->resultStatus) {           while (my @row = $result->fetchrow) {
print join (" ",@row);       }   }
}



Re: prob with PERL/Postgres

From
Thomas Good
Date:
On Mon, 6 Aug 2001, Kate Collins wrote:

> I use the Perl DBI module to connect to a postgres data base on the local
> system.  I don't specify the host name.  This is the syntax I use to connect to
> the data base:
> 
> use DBI;
> 
> $dbname = "foo";
> $connstr = "dbi:Pg:dbname=$dbname";
> $dbh = DBI->connect($connstr);

Kate, he uses a diff module by the same author (Edmund Mergl) but with
a very diff syntax.  The advantage of the DBI  -  Kris, if you're interested -
is that the syntax is much like ESQL/C and the code is much more portable.
For example I use DBI to access both pg and oracle.

Cheers,
Tom

> Kristopher Yates wrote:
> 
> > PERL SNIPPET:
> >
> > # build arrays from file (OMITTED)
> >
> > use Pg;
> > $dbhost='127.0.0.1';
> > $dbname='mpact';
> > #$connstr="dbname=$dbname";
> > $connstr="host=$dbhost dbname=$dbname";
> > $conn = Pg::connectdb($connstr);
> >
> > #more code related to date omitted
> >
> >     $result=$conn->exec($sql);
> >     (PGRES_COMMAND_OK eq $result->resultStatus)
> >     or  die $conn->errorMessage;
> >
> > WHY DO I GET PQsendQuery() -- There is no connection to the
> > backend.  I have tried leaving host blank, using IP 127.0.0.1 and
> > hostname localhost.  This script should work - the problem is
> > something with postgres but I dont know what.  Any ideas out
> > there?  Thanks,  Kris
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 5: Have you checked our extensive FAQ?
> >
> > http://www.postgresql.org/users-lounge/docs/faq.html
> 
> 
> --
> =================================================
> Katherine (Kate) L. Collins
> Senior Software Engineer/Meteorologist
> Weather Services International (WSI Corporation)
> 900 Technology Park Drive
> Billerica, MA 01821
> EMAIL: kcollins@wsi.com
> PHONE: (978) 262-0610
> FAX: (978) 262-0700
> http://www.intellicast.com
> 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
> 


--------------------------------------------------------------------              SVCMC - Center for Behavioral Health
               
 
--------------------------------------------------------------------
Thomas Good                          tomg@ { admin | q8 } .nrnet.org
Programmer/Analyst                              Phone:  718-354-5528 
Residential Services                            Mobile: 917-282-7359  
--------------------------------------------------------------------
/*           Die Wahrheit Ist Irgendwo Da Draussen...             */
--------------------------------------------------------------------



Re: prob with PERL/Postgres

From
Allan Engelhardt
Date:
1.   I'm assuming that psql works fine?  psql -h 127.0.0.1 mpact?
1b. Have you checked the port??  You ARE running postmaster with the '-i' option, aren't you?

The recommended solutions are typically to use the DBI and DBD modules.  Try man DBD::Pg.

Alternatively: have you tried the setdbLogin method instead:

          $conn = Pg::setdbLogin($pghost, $pgport, $pgoptions, $pgtty, $dbname, $login, $pwd)
      Opens a new connection to the backend. The connection      identifier $conn ( a pointer to the PGconn structure )
    must be used in subsequent commands for unique identifica-      tion. Before using $conn you should call
$conn->statusto      ensure, that the connection was properly made.  Closing a      connection is done by deleting the
connectionhandle, eg      'undef $conn;'.
 


Hope this helps a little......


Allan


Kristopher Yates wrote:

> PERL SNIPPET:
>
> # build arrays from file (OMITTED)
>
> use Pg;
> $dbhost='127.0.0.1';
> $dbname='mpact';
> #$connstr="dbname=$dbname";
> $connstr="host=$dbhost dbname=$dbname";
> $conn = Pg::connectdb($connstr);
>
> #more code related to date omitted
>
>     $result=$conn->exec($sql);
>     (PGRES_COMMAND_OK eq $result->resultStatus)
>     or  die $conn->errorMessage;
>
> WHY DO I GET PQsendQuery() -- There is no connection to the
> backend.  I have tried leaving host blank, using IP 127.0.0.1 and
> hostname localhost.  This script should work - the problem is
> something with postgres but I dont know what.  Any ideas out
> there?  Thanks,  Kris
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html



Re: prob with PERL/Postgres

From
Tom Lane
Date:
Thomas Good <tomg@admin.nrnet.org> writes:
> Kate, he uses a diff module by the same author (Edmund Mergl) but with
> a very diff syntax.  The advantage of the DBI - Kris, if you're
> interested - is that the syntax is much like ESQL/C and the code is
> much more portable.  For example I use DBI to access both pg and
> oracle.

DBI is a good alternative, but is unlikely to act much differently as
far as connection problems go.

> use Pg;
> $dbhost='127.0.0.1';
> $dbname='mpact';
> #$connstr="dbname=$dbname";
> $connstr="host=$dbhost dbname=$dbname";
> $conn = Pg::connectdb($connstr);
> 
> #more code related to date omitted
> 
> $result=$conn->exec($sql);
> (PGRES_COMMAND_OK eq $result->resultStatus)
> or  die $conn->errorMessage;
> 
> WHY DO I GET PQsendQuery() -- There is no connection to the
> backend.

It's hard to tell with only that much information.  I think the real
mistake in this code is not checking for failure of the connectdb()
call.  Had you checked at that point, you would have gotten a more
useful error message.  The examples in the Pg documentation recommend
$conn = Pg::connectdb(whatever);die $conn->errorMessage unless PGRES_CONNECTION_OK eq $conn->status;

Try that, and if you're still in the dark, let us see the error
message...
        regards, tom lane


Re: prob with PERL/Postgres

From
Thomas Good
Date:
On Mon, 6 Aug 2001, Tom Lane wrote:

> Thomas Good <tomg@admin.nrnet.org> writes:
> > Kate, he uses a diff module by the same author (Edmund Mergl) but with
> > a very diff syntax.  The advantage of the DBI - Kris, if you're
> > interested - is that the syntax is much like ESQL/C and the code is
> > much more portable.  For example I use DBI to access both pg and
> > oracle.
> 
> DBI is a good alternative, but is unlikely to act much differently as
> far as connection problems go.

You know Thomas, after I build Pg (including 7.1.2) and fire up initdb
there comes a message about starting the db with -D and the location of
the datafiles.  Nothing about using -i...it might be good to include,
no?


Cheers,
Tom 

--------------------------------------------------------------------              SVCMC - Center for Behavioral Health
               
 
--------------------------------------------------------------------
Thomas Good                          tomg@ { admin | q8 } .nrnet.org
Programmer/Analyst                              Phone:  718-354-5528 
Residential Services                            Mobile: 917-282-7359  
--------------------------------------------------------------------
/*           Die Wahrheit Ist Irgendwo Da Draussen...             */
--------------------------------------------------------------------



Re: prob with PERL/Postgres

From
Kate Collins
Date:
I use the Perl DBI module to connect to a postgres data base on the local
system.  I don't specify the host name.  This is the syntax I use to connect to
the data base:

use DBI;

$dbname = "foo";
$connstr = "dbi:Pg:dbname=$dbname";
$dbh = DBI->connect($connstr);

Kristopher Yates wrote:

> PERL SNIPPET:
>
> # build arrays from file (OMITTED)
>
> use Pg;
> $dbhost='127.0.0.1';
> $dbname='mpact';
> #$connstr="dbname=$dbname";
> $connstr="host=$dbhost dbname=$dbname";
> $conn = Pg::connectdb($connstr);
>
> #more code related to date omitted
>
>     $result=$conn->exec($sql);
>     (PGRES_COMMAND_OK eq $result->resultStatus)
>     or  die $conn->errorMessage;
>
> WHY DO I GET PQsendQuery() -- There is no connection to the
> backend.  I have tried leaving host blank, using IP 127.0.0.1 and
> hostname localhost.  This script should work - the problem is
> something with postgres but I dont know what.  Any ideas out
> there?  Thanks,  Kris
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html

--
=================================================
Katherine (Kate) L. Collins
Senior Software Engineer/Meteorologist
Weather Services International (WSI Corporation)
900 Technology Park Drive
Billerica, MA 01821
EMAIL: kcollins@wsi.com
PHONE: (978) 262-0610
FAX: (978) 262-0700
http://www.intellicast.com