Обсуждение: Relation missing?

Поиск
Список
Период
Сортировка

Relation missing?

От
"A B"
Дата:
I got an error

SELECT ERecord(100, 3492,'2008-05-13 10:25:57', 1, 0);

gave me (translating into english)

ERROR:  relation with OID 31330 doesn't exist
CONTEXT:  SQL-statement: "INSERT INTO eLog (customer,shop,event,time)
VALUES ( $1 , $2 , $3 , $4 )"
PL/pgSQL function "erecord" line 5 at SQL statement

ERecord is a function written in PL/pgSQL... so what can this mean?

Re: Relation missing?

От
"A. Kretschmer"
Дата:
am  Tue, dem 13.05.2008, um 15:08:51 +0200 mailte A B folgendes:
> I got an error
>
> SELECT ERecord(100, 3492,'2008-05-13 10:25:57', 1, 0);
>
> gave me (translating into english)
>
> ERROR:  relation with OID 31330 doesn't exist
> CONTEXT:  SQL-statement: "INSERT INTO eLog (customer,shop,event,time)
> VALUES ( $1 , $2 , $3 , $4 )"
> PL/pgSQL function "erecord" line 5 at SQL statement
>
> ERecord is a function written in PL/pgSQL... so what can this mean?

Wild gues: within this function you create this table and you don't use
EXECUTE for that. When you start a new session, the first time yout
function works fine, but the second call fails. Right?

PG caches the plan and the OID's for objects, because this fact it fails
the second time. To prevent this, use EXECUTE for all DDL-commands.


Andreas
--
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net

Re: Relation missing?

От
"A B"
Дата:
In this function I create no table, I just do insert into various
already existing tables.
It is not a prepared statement, but a function I created, so I'm not
sure if EXECUTE is what I should use.
This function has successfully run many times before, over several days.

Excuse my ignorance, but what is DDL commands? Is that like creating tables?


2008/5/13 A. Kretschmer <andreas.kretschmer@schollglas.com>:
> am  Tue, dem 13.05.2008, um 15:08:51 +0200 mailte A B folgendes:
>
>
> > I got an error
>  >
>  > SELECT ERecord(100, 3492,'2008-05-13 10:25:57', 1, 0);
>  >
>  > gave me (translating into english)
>  >
>  > ERROR:  relation with OID 31330 doesn't exist
>  > CONTEXT:  SQL-statement: "INSERT INTO eLog (customer,shop,event,time)
>  > VALUES ( $1 , $2 , $3 , $4 )"
>  > PL/pgSQL function "erecord" line 5 at SQL statement
>  >
>  > ERecord is a function written in PL/pgSQL... so what can this mean?
>
>  Wild gues: within this function you create this table and you don't use
>  EXECUTE for that. When you start a new session, the first time yout
>  function works fine, but the second call fails. Right?
>
>  PG caches the plan and the OID's for objects, because this fact it fails
>  the second time. To prevent this, use EXECUTE for all DDL-commands.
>
>
>  Andreas
>  --
>  Andreas Kretschmer
>  Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
>  GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net
>
>  --
>  Sent via pgsql-novice mailing list (pgsql-novice@postgresql.org)
>  To make changes to your subscription:
>  http://www.postgresql.org/mailpref/pgsql-novice
>

Re: Relation missing?

От
"A. Kretschmer"
Дата:
am  Tue, dem 13.05.2008, um 15:43:52 +0200 mailte A B folgendes:
> In this function I create no table, I just do insert into various
> already existing tables.

Okay, sorry.


> It is not a prepared statement, but a function I created, so I'm not
> sure if EXECUTE is what I should use.
> This function has successfully run many times before, over several days.
>
> Excuse my ignorance, but what is DDL commands? Is that like creating tables?

Right, Data Definition Language.



Regards, Andreas
--
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net

Re: Relation missing?

От
Bruce Hyatt
Дата:
DDL = Data Definition Language

I.e.; CREATE, ALTER and DROP statements.

Bruce

--- A B <gentosaker@gmail.com> wrote:

> In this function I create no table, I just do insert into
> various
> already existing tables.
> It is not a prepared statement, but a function I created, so
> I'm not
> sure if EXECUTE is what I should use.
> This function has successfully run many times before, over
> several days.
>
> Excuse my ignorance, but what is DDL commands? Is that like
> creating tables?
>
>
> 2008/5/13 A. Kretschmer <andreas.kretschmer@schollglas.com>:
> > am  Tue, dem 13.05.2008, um 15:08:51 +0200 mailte A B
> folgendes:
> >
> >
> > > I got an error
> >  >
> >  > SELECT ERecord(100, 3492,'2008-05-13 10:25:57', 1, 0);
> >  >
> >  > gave me (translating into english)
> >  >
> >  > ERROR:  relation with OID 31330 doesn't exist
> >  > CONTEXT:  SQL-statement: "INSERT INTO eLog
> (customer,shop,event,time)
> >  > VALUES ( $1 , $2 , $3 , $4 )"
> >  > PL/pgSQL function "erecord" line 5 at SQL statement
> >  >
> >  > ERecord is a function written in PL/pgSQL... so what can
> this mean?
> >
> >  Wild gues: within this function you create this table and
> you don't use
> >  EXECUTE for that. When you start a new session, the first
> time yout
> >  function works fine, but the second call fails. Right?
> >
> >  PG caches the plan and the OID's for objects, because this
> fact it fails
> >  the second time. To prevent this, use EXECUTE for all
> DDL-commands.
> >
> >
> >  Andreas
> >  --
> >  Andreas Kretschmer
> >  Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr:
> -> Header)
> >  GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA
> http://wwwkeys.de.pgp.net
> >
> >  --
> >  Sent via pgsql-novice mailing list
> (pgsql-novice@postgresql.org)
> >  To make changes to your subscription:
> >  http://www.postgresql.org/mailpref/pgsql-novice
> >
>
> --
> Sent via pgsql-novice mailing list
> (pgsql-novice@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-novice
>