Re: Códigos de Error

From: Alvaro Herrera <alvherre(at)surnet(dot)cl>
To: Máximo Eduardo Méndez <mmendez(at)ceride(dot)gov(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Códigos de Error
Date: 2005-05-17 19:42:29
Message-ID: 20050517194229.GA9624@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Tue, May 17, 2005 at 04:14:59PM +0000, Máximo Eduardo Méndez wrote:
> > > > > Hola Lista. Necesito poder recuperar el código de error que se genera
> > > > > cuando se ejecuta cualquier sentencia SQL. Trabajando en psql o
> > > > > mediante un cliente pgAdmin III, me indica el texto del error pero no
> > > > > el número o código de error. Por ejemplo si intento ingresar una fila
> > > > > en una tabla con una primary key que ya existe, me muestra el texto:
> > > > > ERROR: Cannot insert a duplicate key into unique index
> > > > > institucional_pkey.
> > > >
> > > > Que version estas usando?
> > >
> > > Estoy usando la versión 7.3 sobre un linux fedora 1. Lo que necesito
> > > es algo que desde el mismo servidor postgresql me tire el código de
> > > error, tal vez tocando algún parámetro de configuración me permita
> > > eso. De esta manera desde un cliente podría recuperar ese código de
> > > error y no siempre cero (como ocurre actualmente) junto con el mensaje
> > > correspondiente.
> >
> > Lo siento, los codigos de error fueron incorporados a Postgres en 7.4.
> > Si actualizas a esa version puedes obtenerlos facilmente.
>
>
> Muchas gracias Alvaro por tu colaboración. De qué manera puedo
> obtener ahora el código de error en las nuevas versiones además del
> texto?

Depende del driver. En psql puedes hacer esto:

alvherre=# \set VERBOSITY verbose
alvherre=# select foo;
ERROR: 42703: no existe la columna «foo»
LOCATION: transformColumnRef, /home/alvherre/CVS/pgsql/source/00orig/src/backend/parser/parse_expr.c:391

El 42073 es SQLSTATE. Mira la documentacion de tu biblioteca o
controlador.

alvherre=# create table test (a int unique);
NOTICE: 00000: CREATE TABLE / UNIQUE creará el índice implícito «test_a_key» para la tabla «test»
LOCATION: DefineIndex, /home/alvherre/CVS/pgsql/source/00orig/src/backend/commands/indexcmds.c:383
CREATE TABLE
alvherre=# insert into test values (1);
INSERT 0 1
alvherre=# insert into test values (1);
ERROR: 23505: llave duplicada viola restricción unique «test_a_key»
LOCATION: _bt_check_unique, /home/alvherre/CVS/pgsql/source/00orig/src/backend/access/nbtree/nbtinsert.c:251

--
Alvaro Herrera (<alvherre[a]surnet.cl>)
"La primera ley de las demostraciones en vivo es: no trate de usar el sistema.
Escriba un guión que no toque nada para no causar daños." (Jakob Nielsen)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2005-05-17 19:44:37 Re: Instalación versión 8.0.2
Previous Message Mximo Eduardo Mndez 2005-05-17 17:56:19 Re: Instalacin versin 8.0.2