sql problem with php

sql problem with php

am 05.11.2004 15:33:09 von Flavio Fonseca

Hi,

I am having a problem with a system I developed using php with postgres.

Take a look at this:
Welcome to psql 7.3.2, the PostgreSQL interactive terminal.
NetAdmin=# delete from operador where oplogin = 'ff';
ERROR: fk_historicosessao_operador referential integrity violation - key in
operador still referenced from historicosessao

and then, this:

Welcome to psql 7.4.2, the PostgreSQL interactive terminal.
NetAdmin=# delete from operador where oplogin = 'ff';
ERROR: update or delete on "operador" violates foreign key constraint
"fk_historicosessao_operador" on "historicosessao"

I am not able to get a error_number in pgsql errors, only the error message.
So when I used pgsql 7.3 a used the string "referential integrity violation"
to detect this error, but on version 7.4 of pgsql this string was replaced
with "violates foreign key constraint" .
Anyone has a definitive solution on this or the way is to wait and change all
my code on future releases of pgsql?


Thank you all for the attention.
--
Att.

Flavio Fonseca
Administrador de Redes
Divisao de Redes
Universidade Federal de Uberlandia

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html

Re: sql problem with php

am 06.11.2004 02:40:34 von ljb

ff@dr.ufu.br wrote:
> Hi,
>
> I am having a problem with a system I developed using php with postgres.
>...
>
> I am not able to get a error_number in pgsql errors, only the error message.
> So when I used pgsql 7.3 a used the string "referential integrity violation"
> to detect this error, but on version 7.4 of pgsql this string was replaced
> with "violates foreign key constraint" .
> Anyone has a definitive solution on this or the way is to wait and change all
> my code on future releases of pgsql?

Unfortunately this is a limitation of the PHP PostgreSQL extension.
PostgreSQL provids access to error numbers (I think as of 7.4)
through libpq PQerrorField(), but PHP doesn't give you access to this yet.

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Re: sql problem with php

am 06.11.2004 16:37:49 von Robert Treat

On Friday 05 November 2004 20:40, ljb wrote:
> ff@dr.ufu.br wrote:
> > Hi,
> >
> > I am having a problem with a system I developed using php with
> > postgres. ...
> >
> > I am not able to get a error_number in pgsql errors, only the error
> > message. So when I used pgsql 7.3 a used the string "referential
> > integrity violation" to detect this error, but on version 7.4 of pgsql
> > this string was replaced with "violates foreign key constraint" .
> > Anyone has a definitive solution on this or the way is to wait and change
> > all my code on future releases of pgsql?
>
> Unfortunately this is a limitation of the PHP PostgreSQL extension.
> PostgreSQL provids access to error numbers (I think as of 7.4)
> through libpq PQerrorField(), but PHP doesn't give you access to this yet.
>

Actually I believe you can get it:
http://us2.php.net/manual/en/function.pg-result-error.php

though this will only work in pg74 or greater.

--
Robert Treat
Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

Re: sql problem with php

am 06.11.2004 23:53:23 von ljb

xzilla@users.sourceforge.net wrote:
> On Friday 05 November 2004 20:40, ljb wrote:
>> ff@dr.ufu.br wrote:
>> > Hi,
>> >
>> > I am having a problem with a system I developed using php with
>> > postgres. ...
>> >
>> > I am not able to get a error_number in pgsql errors, only the error
>> > message. So when I used pgsql 7.3 a used the string "referential
>> > integrity violation" to detect this error, but on version 7.4 of pgsql
>> > this string was replaced with "violates foreign key constraint" .
>> > Anyone has a definitive solution on this or the way is to wait and change
>> > all my code on future releases of pgsql?
>>
>> Unfortunately this is a limitation of the PHP PostgreSQL extension.
>> PostgreSQL provids access to error numbers (I think as of 7.4)
>> through libpq PQerrorField(), but PHP doesn't give you access to this yet.
>>
>
> Actually I believe you can get it:
> http://us2.php.net/manual/en/function.pg-result-error.php
>
> though this will only work in pg74 or greater.

No, I don't think PHP has this capability (get the value of an error
message subfield). The pg_result_error() you refer to gives you the whole
message, which makes it hard for a program to determine exactly what went
wrong.

On the documentation page you point to, somebody added a comment
referencing his own patch. The patch adds a PHP function called
pg_result_error_field(), which lets a script get at the individual
PostgreSQL error message fields. This would be a nice addition to PHP, but
I don't know if the patch was submitted or accepted. It isn't in the latest
PHP 4 release, 4.3.9. As you point out, however, it won't help the original
poster still dealing with PostgreSQL 7.3, which doesn't have this feature.



---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)