Re: pg_last_error() doesn't return connection errors

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
Thread:
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.
------------------------------------------------------------------------

In response to

Responses

Browse pgsql-php by date

  From Date Subject
Next Message Frank Naude 2010-08-27 09:17:18 Re: pg_last_error() doesn't return connection errors
Previous Message Frank Naude 2010-08-26 11:44:44 pg_last_error() doesn't return connection errors