Skip site navigation (1) Skip section navigation (2)

Re: Problema al restaurar una BD

From: Mario Rodriguez <mario(dot)irs(at)gmail(dot)com>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Problema al restaurar una BD
Date: 2012-02-13 15:10:26
Message-ID: CAEOd6CYS_vE2Q3ZBdAsu4mC90q4zrspBJ6Zn0kygJ=_YB4rOFg@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
> Hola a todos, he detectado el problema que me estaba generando el error al
> momento de restaurar mi BD, resulta que al analizar el archivo de respaldo
> logré aislar el problema ya que es un respaldo muy grande, resulta que la
> función llamada "ptjpizqvdcc", por la que preguntaba Alvaro, estaba
> declarada para el esquema e2011, esta función se usa en un CONSTRAINT que
> tiene mi tabla llamada pxi_cat_calculados, anexo la definición de la tabla
> como aparece en el respaldo:
>
>
>
CREATE TABLE pxi_cat_calculados (
    idprodxintegrar integer NOT NULL,
    desglose text NOT NULL,
    izqvun public.racional,
    idclase integer NOT NULL,
    idpreftemp integer NOT NULL,
    idrefgeo integer NOT NULL,
    izq public.racional NOT NULL,
    estadoint character(1) DEFAULT '1'::bpchar,
    dcc character(1) DEFAULT '0'::bpchar,
    CONSTRAINT pxi_cat_calculados_dcc CHECK (((dcc >= '0'::bpchar) AND (dcc
<= '3'::bpchar))),
    CONSTRAINT pxi_cat_calculados_dcc_3 CHECK ((((dcc = '3'::bpchar) AND
(izqvun OPERATOR(public.=) public.ptjpizqvdcc())) OR ((dcc = ANY
(ARRAY['0'::bpchar, '1'::bpchar, '2'::bpchar])) AND ((izqvun
OPERATOR(public.>) public.ptjpizqvdcc()) OR ((izqvun)::text = '(0,
0)'::text))))),

    CONSTRAINT pxicat_calculado_estadoint_check CHECK (((estadoint >=
'1'::bpchar) AND (estadoint <= '3'::bpchar)))
);

entonces al ver el respaldo antes de hacer el COPY de los datos tiene el
siguiente search_path:

SET search_path = e2011, pg_catalog;

entonces la función si está en el esquema e2011 pero el tipo de dato que
regresa esta en public que viene siendo el tipo RACIONAL y marca el error.

Cambié la función al esquema public para que concordara con el tipo y al
hacer el respaldo si pone el search_path como:

SET search_path = public, pg_catalog;

pero vuelve a marcarme el mismo error.

Hasta que modifico la definición de la tabla, es que ya no me marca error,
o sea la dejo como sigue:

CREATE TABLE pxi_cat_calculados (
    idprodxintegrar integer NOT NULL,
    desglose text NOT NULL,
    izqvun public.racional,
    idclase integer NOT NULL,
    idpreftemp integer NOT NULL,
    idrefgeo integer NOT NULL,
    izq public.racional NOT NULL,
    estadoint character(1) DEFAULT '1'::bpchar,
    dcc character(1) DEFAULT '0'::bpchar,
    CONSTRAINT pxi_cat_calculados_dcc CHECK (((dcc >= '0'::bpchar) AND (dcc
<= '3'::bpchar))),
    --CONSTRAINT pxi_cat_calculados_dcc_3 CHECK ((((dcc = '3'::bpchar) AND
(izqvun OPERATOR(public.=) public.ptjpizqvdcc())) OR ((dcc = ANY
(ARRAY['0'::bpchar, '1'::bpchar, '2'::bpchar])) AND ((izqvun
OPERATOR(public.>)
) OR ((izqvun)::text = '(0, 0)'::text))))),
    CONSTRAINT pxi_cat_calculados_dcc_3 CHECK ((((dcc = '3'::bpchar) AND
(izqvun OPERATOR(public.=) '(1, 2)'::public.racional)) OR ((dcc = ANY
(ARRAY['0'::bpchar, '1'::bpchar, '2'::bpchar])) AND ((izqvun
OPERATOR(public.>) '(1, 2)'::public.racional) OR ((izqvun)::text = '(0,
0)'::text))))),
    CONSTRAINT pxicat_calculado_estadoint_check CHECK (((estadoint >=
'1'::bpchar) AND (estadoint <= '3'::bpchar)))
);

si se fijan el CONSTRAINT donde traigo problema lo dejé en comentario, y lo
que me regresab la función "ptjpizqdcc" lo cambié por lo que regresa y asi
es como si funciona.

De todo esto, me surgen las siguientes dudas:
1.- ¿Porque postgresql no pone en el respaldo el search_path también con el
esquema public?
2.- si le indico en el CONSTRAINT en que esquema esta la función
(public.ptjpizqvdcc()) ¿porque aún me marca error?
3.- ¿Es correcto usar funciones en los CONSTRAINT's?

In response to

Responses

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2012-02-13 16:38:10
Subject: Re: Tabla inserta constantemente registros
Previous:From: Mario RodriguezDate: 2012-02-13 14:58:26
Subject: Re: Problema al restaurar una BD

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group