Re: Atrapar los errores de Postgres de Referencias...

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Jaime Casanova <systemguards(at)gmail(dot)com>
Cc: Alex Barrios <alexertech(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Atrapar los errores de Postgres de Referencias...
Date: 2006-06-28 06:33:22
Message-ID: 20060628063322.GB2516@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Jaime Casanova escribió:
> >
> >Tengo una referencia entre la tabla ciudades y estados por medio del
> >campo cod_estado. La referencia es la siguiente:
> >
> >FOREIGN KEY ciudad(cod_estado) REFERENCES estado(cod_estado)
> >
> ...
> >
> >Todo funciona perfecto, pero me aparece un feo error de postgres justo
> >en el PHP indicando que se viola la clave.
> >
> >Quisiera atrapar este error, ver a que tabla se refiere, para asi
> >poder convertir este error en un mensaje mas digerible visualmente
> >para el usuario comun.
>
> que te parece
>
> CONSTRAINT "mensaje mas claro"
> FOREIGN KEY ciudad(cod_estado) REFERENCES estado(cod_estado);

Yo creo que el problema no es ese, sino que PHP tira el mensaje completo
de error hacia el browser. El usuario recibe un mensaje horrible, que
generalmente no esta dentro de las especificaciones de diseño grafico
del sistema, puede estar en cualquier idioma y entregar informacion que
podria ser considerada delicada (como el nombre de la tabla).

Para evitar eso lo primero es desactivar esta "caracteristica" de PHP
(mis saludos a los brillantes diseñadores de PHP). Luego, capturas el
error; el mensaje, la severidad, el SQLSTATE, etc. Esto se puede hacer
usando pg_result_error_field. Captura el SQLSTATE y compara con un
valor conocido. Voila.

Ahora, si esto no es a lo que el amigo Alex se refiere, creo que tendra
que explicarse mucho mejor.

Algo que no entenderia es que alguien se diera cuenta que su version de
PHP no soporta pg_result_error_field y todavia quisiera seguir usando
PHP ...

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Nicolás Domínguez Florit 2006-06-28 11:04:54 Re: Compilar una funcion en C
Previous Message Jaime Casanova 2006-06-28 06:18:04 Re: Atrapar los errores de Postgres de Referencias...