Lists: | Postg윈 토토SQL : Postg윈 토토SQL 메일 링리스트 : 2010-08-26 이후 PGSQL-PHP |
---|
From: | Frank Naude <naudefj(at)gmail(dot)com> |
---|---|
To: | pgsql-php(at)postgresql(dot)org |
Subject: | pg_last_error() doesn't return connection errors |
Date: | 2010-08-26 11:44:44 |
Message-ID: | AANLkTikUeGfaaOwsDav2GyD=tq7__70jQT_G4KhQbA8n@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | Postg윈 토토SQL : Postg윈 토토SQL 메일 링리스트 : 2010-08-26 이후 PGSQL-PHP |
Hi,
I can successfully connect to PostgreSQL (pgsql extension). However,
when I make a deliberate mistake, I'm unable to capture the connection
error with pg_last_error() as one would with the *_last_error()
functions of other database extensions.
Here is an example:
<?php
$c = pg_connect('host=127.0.0.1 user=postgres password=xxx
dbname=yyy') or var_dump( pg_last_error() );
?>
The following output (with warnings) is returned:
Warning: pg_connect() [function.pg-connect]: Unable to connect to
PostgreSQL server: FATAL: password authentication failed for user
"postgres" in ..
Warning: pg_last_error() [function.pg-last-error]: No PostgreSQL link
opened yet in ...
bool(false)
One would expect pg_last_error() to return "password authentication
failed" instead of FALSE!
Best regards.
Frank
From: | Andrew McMillan <andrew(at)morphoss(dot)com> |
---|---|
To: | Frank Naude <naudefj(at)gmail(dot)com> |
Cc: | pgsql-php(at)postgresql(dot)org |
Subject: | Re: pg_last_error() doesn't return connection errors |
Date: | 2010-08-26 22:44:33 |
Message-ID: | 1282862673.3487.3674.camel@happy.home.mcmillan.net.nz |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-php |
On Thu, 2010-08-26 at 13:44 +0200, Frank Naude wrote:
> Hi,
>
> I can successfully connect to PostgreSQL (pgsql extension). However,
> when I make a deliberate mistake, I'm unable to capture the connection
> error with pg_last_error() as one would with the *_last_error()
> functions of other database extensions.
>
> Here is an example:
>
> <?php
> $c = pg_connect('host=127.0.0.1 user=postgres password=xxx
> dbname=yyy') or var_dump( pg_last_error() );
> ?>
>
> The following output (with warnings) is returned:
>
> Warning: pg_connect() [function.pg-connect]: Unable to connect to
> PostgreSQL server: FATAL: password authentication failed for user
> "postgres" in ..
> Warning: pg_last_error() [function.pg-last-error]: No PostgreSQL link
> opened yet in ...
> bool(false)
>
> One would expect pg_last_error() to return "password authentication
> failed" instead of FALSE!
Hi Frank,
Presumably pg_last_error() doesn't do anything useful until after the
database connection has been made...
That behaviour doesn't seem particularly unnatural to me, really, though
this seems an unlikely place to be posting a bug about it. If it's a
problem for you perhaps you should file a bug with the developer.
Alternatively, does pg_errormessage() have the same flaw, or does that
give you the error details that you're after? That's what I use in my
own code, although I note that in my own code I only log the fact of
connection failure, without logging the reason, and I use that for
getting the error when a query fails. Perhaps something I should
improve :-)
Cheers,
Andrew.
--
------------------------------------------------------------------------
andrew (AT) morphoss (DOT) com +64(272)DEBIAN
Flexibility is overrated. Constraints are liberating.
------------------------------------------------------------------------
From: | Frank Naude <naudefj(at)gmail(dot)com> |
---|---|
To: | Andrew McMillan <andrew(at)morphoss(dot)com> |
Cc: | pgsql-php(at)postgresql(dot)org |
Subject: | Re: pg_last_error() doesn't return connection errors |
Date: | 2010-08-27 09:17:18 |
Message-ID: | AANLkTikSx4sAmvPb0Wwo01JTnN+WPFXC2ZzNtS1Kw=f=@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-php |
Hi Andrew,
Thank you very much for the reply!
> Alternatively, does pg_errormessage() have the same flaw...?
Unfortunately pg_errormessage() doesn't work either. It returns:
Warning: pg_errormessage() [function.pg-errormessage]: No PostgreSQL
link opened yet in...
> That behaviour doesn't seem particularly unnatural to me,...
It is inconsistent with how the other DB modules behave. I can provide
you with some examples if it would help.
Best regards.
Frank
From: | Grzegorz Ornoch <yanegorz(at)gmail(dot)com> |
---|---|
To: | Frank Naude <naudefj(at)gmail(dot)com> |
Cc: | pgsql-php(at)postgresql(dot)org |
Subject: | Re: pg_last_error() doesn't return connection errors |
Date: | 2010-08-27 10:22:40 |
Message-ID: | AANLkTinGNuVN3wWe2u08x5MhWtBOV--=71FCCMvrbksv@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-php |
Hi
Try this function
/**
* @name pg_error
*
* @param pg resource result
* @param pg resource connection
*
* @return string content of the error pg
*
*/
function pg_error($result, $connection)
{
return ($result === false ? pg_last_error($connection) :
pg_result_error($result));
}
--
Regards
Grzegorz Ornoch
On Fri, Aug 27, 2010 at 11:17 AM, Frank Naude <naudefj(at)gmail(dot)com> wrote:
> Hi Andrew,
>
> Thank you very much for the reply!
>
> > Alternatively, does pg_errormessage() have the same flaw...?
>
> Unfortunately pg_errormessage() doesn't work either. It returns:
>
> Warning: pg_errormessage() [function.pg-errormessage]: No PostgreSQL
> link opened yet in...
>
> > That behaviour doesn't seem particularly unnatural to me,...
>
> It is inconsistent with how the other DB modules behave. I can provide
> you with some examples if it would help.
>
> Best regards.
>
> Frank
>
> --
> Sent via pgsql-php mailing list (pgsql-php(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-php
>
From: | Frank Naude <naudefj(at)gmail(dot)com> |
---|---|
To: | Grzegorz Ornoch <yanegorz(at)gmail(dot)com> |
Cc: | pgsql-php(at)postgresql(dot)org |
Subject: | Re: pg_last_error() doesn't return connection errors |
Date: | 2010-08-27 12:26:33 |
Message-ID: | AANLkTi=tc8audB46SdQqnmnNLPhvo9Dp-z0ONMxdLBUO@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-php |
Hi Grzegorz,
On Fri, Aug 27, 2010 at 12:22 PM, Grzegorz Ornoch <yanegorz(at)gmail(dot)com> wrote:
> Try this function...
Nice function, but since we cannot connect, and we do not have a
connection, it wouldn't help much either.
Best regards.
Frank
From: | Frank Naude <naudefj(at)gmail(dot)com> |
---|---|
To: | Andrew McMillan <andrew(at)morphoss(dot)com> |
Cc: | pgsql-php(at)postgresql(dot)org |
Subject: | Re: pg_last_error() doesn't return connection errors |
Date: | 2010-08-27 12:33:41 |
Message-ID: | AANLkTikf8JXMHqWg060jmcqyNBv+deSAs-m5nOnak_GH@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-php |
Hi Andrew,
On Fri, Aug 27, 2010 at 2:01 PM, Andrew McMillan <andrew(at)morphoss(dot)com> wrote:
> Since I've migrated to PDO, and only have a bit of legacy stuff around
> that uses pg_* I don't think it will do me any good at all! I really
> try to let other people do all of the coding against other databases, so
> I can luxuriate in the One True SQL :-)
I'm fully aware that the pdo_pgsql works as it should - here is an example:
try {
$c = new PDO('pgsql:host=127.0.0.1 user=postgres password=xxx
dbname=yyy', 'postgres', 'xxx');
} catch (PDOException $e) {
var_dump( $e->getMessage() );
}
However, the pgsql driver needs some updating or should be deprecated.
Best regards.
Frank