Thread: prob with PERL/Postgres
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
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
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); } } }
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... */ --------------------------------------------------------------------
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
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
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... */ --------------------------------------------------------------------
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