Обсуждение: DBD::Pg 0.96 and DBI 1.15 ignoring username and password
I've just upgraded to DBD::Pg 0.96 and DBI 1.15, and now every script I have that uses DBI gives me this error: 1.15 at ./dbi-test line 6 Use of uninitialized value in subroutine entry at /usr/local/lib/perl5/site_perl/5.6.0/i586-linux/DBD/Pg.pm line 94. Use of uninitialized value in subroutine entry at /usr/local/lib/perl5/site_perl/5.6.0/i586-linux/DBD/Pg.pm line 94. DBI->connect(dbname=cp) failed: fe_sendauth: no password supplied at ./dbi-test line 8 The test.pl script used in the DBD 'make test' also failed with this error. I have not changed anything in my PostgreSQL (7.1beta3) setup or in my scripts. I have password authentication set for local users, and do have $PGHOST set accordingly. Logging into psql works fine, but all of my Perl DBI scripts are failing. Here is a test program that is causing this error (the real user name and password are changed): #!/usr/local/bin/perl -w use strict; use DBI; warn $DBI::VERSION; my $dbh = DBI->connect('DBI:Pg:dbname=cp', 'user', 'passwd') or DBI-errstr; $dbh->disconnect(); This gives the error output above also. If I change pg_hba.conf to 'trust' on localhost, (and unset $PGHOST) and I run the same script, it tells me that 'bmccoy' (who I am logged in as) does not exist as a user (which is true). It looks like the user and password fields are being completely ignored by DBD::Pg. What happened? -- Brett http://www.chapelperilous.net/btfwk/ ------------------------------------------------------------------------ Adapt. Enjoy. Survive.
> If I change pg_hba.conf to 'trust' on localhost, (and unset $PGHOST) and I > run the same script, it tells me that 'bmccoy' (who I am logged in as) > does not exist as a user (which is true). It looks like the user and > password fields are being completely ignored by DBD::Pg. > > What happened? New bug introduced. Here's an (unofficial) fix. I just sent it to the dbi-users list and Edmund Mergl in reply to a message on the dbi-users list, so I've dropped that list from this reply. Regards, Giles *** DBD-Pg-0.96/Pg.pm-orig Tue Apr 10 03:44:18 2001 --- DBD-Pg-0.96/Pg.pm Sun Apr 15 10:26:16 2001 *************** *** 79,89 **** $Name =~ s/^.*dbname\s*=\s*//; $Name =~ s/\s*;.*$//; ! $user = "" unless defined($user); ! $auth = "" unless defined($auth); ! ! $user = $ENV{DBI_USER} unless $user eq ""; ! $auth = $ENV{DBI_PASS} unless $auth eq ""; my($dbh) = DBI::_new_dbh($drh, { 'Name' => $Name, --- 79,88 ---- $Name =~ s/^.*dbname\s*=\s*//; $Name =~ s/\s*;.*$//; ! $user ||= $ENV{DBI_USER}; ! $auth ||= $ENV{DBI_PASS}; ! $user ||= ""; ! $auth ||= ""; my($dbh) = DBI::_new_dbh($drh, { 'Name' => $Name,
On Sun, 15 Apr 2001, Giles Lean wrote: > > If I change pg_hba.conf to 'trust' on localhost, (and unset $PGHOST) and I > > run the same script, it tells me that 'bmccoy' (who I am logged in as) > > does not exist as a user (which is true). It looks like the user and > > password fields are being completely ignored by DBD::Pg. > > > > What happened? > > New bug introduced. Here's an (unofficial) fix. I just sent it to the > dbi-users list and Edmund Mergl in reply to a message on the dbi-users > list, so I've dropped that list from this reply. Great! Worked fine. Thanks! -- Brett http://www.chapelperilous.net/btfwk/ ------------------------------------------------------------------------ "Floggings will continue until morale improves." -- anonymous flyer being distributed at Exxon USA
On Sun, 15 Apr 2001, Mark Stosberg wrote: > I believe this due to a bug in DBD::Pg .96. See the recent thread on > the dbi-users list entitled: > > "bug in DBD::Pg .96-- connect user mishandled?" > > A patch is in the works, and a workaround seems to be to use > $ENV{DBI_USER} and $ENV{DBI_PASS} to set the username and password, > which seem to be respected appropriately. Yes, I received the patch yesterday, as a matter of fact. Still can't get selectrow_hashref to work, though. :-) -- Brett http://www.chapelperilous.net/btfwk/ ------------------------------------------------------------------------ HELLO KITTY gang terrorizes town, family STICKERED to death!
Brett, I believe this due to a bug in DBD::Pg .96. See the recent thread on the dbi-users list entitled: "bug in DBD::Pg .96-- connect user mishandled?" A patch is in the works, and a workaround seems to be to use $ENV{DBI_USER} and $ENV{DBI_PASS} to set the username and password, which seem to be respected appropriately. -mark "Brett W. McCoy" wrote: > > I've just upgraded to DBD::Pg 0.96 and DBI 1.15, and now every script I > have that uses DBI gives me this error: > > 1.15 at ./dbi-test line 6 > Use of uninitialized value in subroutine entry at > /usr/local/lib/perl5/site_perl/5.6.0/i586-linux/DBD/Pg.pm line 94. > Use of uninitialized value in subroutine entry at > /usr/local/lib/perl5/site_perl/5.6.0/i586-linux/DBD/Pg.pm line 94. > DBI->connect(dbname=cp) failed: fe_sendauth: no password supplied at > ./dbi-test line 8 > > The test.pl script used in the DBD 'make test' also failed with this > error. I have not changed anything in my PostgreSQL (7.1beta3) setup or > in my scripts. > > I have password authentication set for local users, and do have $PGHOST > set accordingly. Logging into psql works fine, but all of my Perl DBI > scripts are failing. > > Here is a test program that is causing this error (the real user name and > password are changed): > > #!/usr/local/bin/perl -w > > use strict; > use DBI; > > warn $DBI::VERSION; > > my $dbh = DBI->connect('DBI:Pg:dbname=cp', 'user', 'passwd') or DBI-errstr; > > $dbh->disconnect(); > > This gives the error output above also. > > If I change pg_hba.conf to 'trust' on localhost, (and unset $PGHOST) and I > run the same script, it tells me that 'bmccoy' (who I am logged in as) > does not exist as a user (which is true). It looks like the user and > password fields are being completely ignored by DBD::Pg. > > What happened? > > -- Brett > http://www.chapelperilous.net/btfwk/ > ------------------------------------------------------------------------ > Adapt. Enjoy. Survive. -- http://mark.stosberg.com/