Обсуждение: Problem with database: FATAL 1: cannot find attribute 24 of relation

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

Problem with database: FATAL 1: cannot find attribute 24 of relation

От
"Tauren Mills"
Дата:
Sorry for cross-posting this to both admin and general.  I first posted to
admin, but as I'm desperate here and there is more activity in the general
list, I'm now posting it here as well.

---

Help!

One of my customers is having a problem with their database causing all of
their sites to be down right now.  The problem seems to effect only their
database, not any other databases on the server.  Here is the output when
connecting to it:

[root@s1 data]# psql -U postgres dans_pgsql
Password:
Asql: FATAL 1:  cannot find attribute 24 of relation

I've searched the email archives as well as deja.com, but cannot find this
error message mentioned anywhere.  Does anyone know what it means?  I've
tried restarting postgres.  Can anyone help suggest what I can do to get
this database working again?

I have backups of all raw files on the server, but the customer has not done
a dump of their database recently.  I rather doubt that restoring their
database from tape would replace it in a consistent state.  Any thoughts on
this as well?

One more thing...

The vacuum command is giving the same error:

[root@s1 data]# vacuumdb -v -U postgres dans_pgsql
Password:
Asql: FATAL 1:  cannot find attribute 24 of relation
vacuumdb: vacuum  dans_pgsql failed

Is there another way to fix a corrupt database (assuming that is what the
problem here is)?

Thanks,
Tauren



Re: Problem with database: FATAL 1: cannot find attribute 24

От
Justin Clift
Дата:
Hi Tauren,

Have you found the solution for this yet?

It really sounds like part of your customer's database has been deleted
or gone missing.

Which version of PostgreSQL are you using, and which operating system is
it on?

:-)

Regards and best wishes,

Justin Clift


Tauren Mills wrote:
>
> Sorry for cross-posting this to both admin and general.  I first posted to
> admin, but as I'm desperate here and there is more activity in the general
> list, I'm now posting it here as well.
>
> ---
>
> Help!
>
> One of my customers is having a problem with their database causing all of
> their sites to be down right now.  The problem seems to effect only their
> database, not any other databases on the server.  Here is the output when
> connecting to it:
>
> [root@s1 data]# psql -U postgres dans_pgsql
> Password:
> Asql: FATAL 1:  cannot find attribute 24 of relation
>
> I've searched the email archives as well as deja.com, but cannot find this
> error message mentioned anywhere.  Does anyone know what it means?  I've
> tried restarting postgres.  Can anyone help suggest what I can do to get
> this database working again?
>
> I have backups of all raw files on the server, but the customer has not done
> a dump of their database recently.  I rather doubt that restoring their
> database from tape would replace it in a consistent state.  Any thoughts on
> this as well?
>
> One more thing...
>
> The vacuum command is giving the same error:
>
> [root@s1 data]# vacuumdb -v -U postgres dans_pgsql
> Password:
> Asql: FATAL 1:  cannot find attribute 24 of relation
> vacuumdb: vacuum  dans_pgsql failed
>
> Is there another way to fix a corrupt database (assuming that is what the
> problem here is)?
>
> Thanks,
> Tauren
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

--
"My grandfather once told me that there are two kinds of people: those
who work and those who take the credit. He told me to try to be in the
first group; there was less competition there."
     - Indira Gandhi

Re: Problem with database: FATAL 1: cannot find attribute 24

От
"Tauren Mills"
Дата:
Hi Justin,

Thanks for the reply.  Unfortunately, I still haven't solved the problem,
but do have slightly more info now.

We are getting this error message whenever we try to connect using psql, the
\c command in psql, the pg_dump command, the vacuum command, or the JDBC
driver:

FATAL 1:  cannot find attribute 24 of relation ^MA

I'm wondering if the database somehow got a table or some relation named ^MA
(or rather, carriage-return, capital A) that is causing the postgresql
backend to choke.
The only place that I see this error message issued is in
src/backend/utils/cache/relcache.c.

Do you mean that one of the raw database files would have been deleted?  My
customer has no access to that directory and I really don't think that I did
anything to it.  Or do you mean something else?

Any suggestions you have would be very appreciated!

Thanks,
Tauren


> -----Original Message-----
> From: pgsql-general-owner@postgresql.org
> [mailto:pgsql-general-owner@postgresql.org]On Behalf Of Justin Clift
> Sent: Sunday, September 16, 2001 3:31 AM
> To: Tauren Mills; PostgreSQL General Mailing List
> Subject: Re: [GENERAL] Problem with database: FATAL 1: cannot find
> attribute 24
>
>
> Hi Tauren,
>
> Have you found the solution for this yet?
>
> It really sounds like part of your customer's database has been deleted
> or gone missing.
>
> Which version of PostgreSQL are you using, and which operating system is
> it on?
>
> :-)
>
> Regards and best wishes,
>
> Justin Clift
>
>
> Tauren Mills wrote:
> >
> > Sorry for cross-posting this to both admin and general.  I
> first posted to
> > admin, but as I'm desperate here and there is more activity in
> the general
> > list, I'm now posting it here as well.
> >
> > ---
> >
> > Help!
> >
> > One of my customers is having a problem with their database
> causing all of
> > their sites to be down right now.  The problem seems to effect
> only their
> > database, not any other databases on the server.  Here is the
> output when
> > connecting to it:
> >
> > [root@s1 data]# psql -U postgres dans_pgsql
> > Password:
> > Asql: FATAL 1:  cannot find attribute 24 of relation
> >
> > I've searched the email archives as well as deja.com, but
> cannot find this
> > error message mentioned anywhere.  Does anyone know what it means?  I've
> > tried restarting postgres.  Can anyone help suggest what I can do to get
> > this database working again?
> >
> > I have backups of all raw files on the server, but the customer
> has not done
> > a dump of their database recently.  I rather doubt that restoring their
> > database from tape would replace it in a consistent state.  Any
> thoughts on
> > this as well?
> >
> > One more thing...
> >
> > The vacuum command is giving the same error:
> >
> > [root@s1 data]# vacuumdb -v -U postgres dans_pgsql
> > Password:
> > Asql: FATAL 1:  cannot find attribute 24 of relation
> > vacuumdb: vacuum  dans_pgsql failed
> >
> > Is there another way to fix a corrupt database (assuming that
> is what the
> > problem here is)?
> >
> > Thanks,
> > Tauren
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>
> --
> "My grandfather once told me that there are two kinds of people: those
> who work and those who take the credit. He told me to try to be in the
> first group; there was less competition there."
>      - Indira Gandhi
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>


Re: Problem with database: FATAL 1: cannot find attribute 24

От
Martijn van Oosterhout
Дата:
On Sun, Sep 16, 2001 at 08:23:57PM -0700, Tauren Mills wrote:
> We are getting this error message whenever we try to connect using psql, the
> \c command in psql, the pg_dump command, the vacuum command, or the JDBC
> driver:
>
> FATAL 1:  cannot find attribute 24 of relation ^MA

Looks like corruption.

An idea. Kill off the postmaster, then start postgres directly from the
command line (I beleive it's just ./postgres [dbname]). That should get you
in because i think it's one of the queries psql sends on startup that fouls
up.

Anyway, once you have a prompt, type:

select * from pg_class;

and

select * from pg_attribute where attnum = 24;

Look for corruption and other strange data.

HTH,
--
Martijn van Oosterhout <kleptog@svana.org>
http://svana.org/kleptog/
> Magnetism, electricity and motion are like a three-for-two special offer:
> if you have two of them, the third one comes free.

Re: Problem with database: FATAL 1: cannot find attribute 24

От
"Tauren Mills"
Дата:
One more thing...

I'm running version 7.1.2 installed from RPM on a Red Hat 6.2 server.

Tauren


> -----Original Message-----
> From: Martijn van Oosterhout [mailto:kleptog@svana.org]
> Sent: Sunday, September 16, 2001 9:07 PM
> To: Tauren Mills
> Cc: Justin Clift; PostgreSQL General Mailing List
> Subject: Re: [GENERAL] Problem with database: FATAL 1: cannot find
> attribute 24
>
>
> On Sun, Sep 16, 2001 at 08:23:57PM -0700, Tauren Mills wrote:
> > We are getting this error message whenever we try to connect
> using psql, the
> > \c command in psql, the pg_dump command, the vacuum command, or the JDBC
> > driver:
> >
> > FATAL 1:  cannot find attribute 24 of relation ^MA
>
> Looks like corruption.
>
> An idea. Kill off the postmaster, then start postgres directly from the
> command line (I beleive it's just ./postgres [dbname]). That
> should get you
> in because i think it's one of the queries psql sends on startup
> that fouls
> up.
>
> Anyway, once you have a prompt, type:
>
> select * from pg_class;
>
> and
>
> select * from pg_attribute where attnum = 24;
>
> Look for corruption and other strange data.
>
> HTH,
> --
> Martijn van Oosterhout <kleptog@svana.org>
> http://svana.org/kleptog/
> > Magnetism, electricity and motion are like a three-for-two
> special offer:
> > if you have two of them, the third one comes free.
>


Re: Problem with database: FATAL 1: cannot find attribute 24

От
"Tauren Mills"
Дата:
Thanks for the assistance!  Unfortunately, I still can't get in the way you
suggest.  I wasn't able to start postgres by simply typing "postgres
[dbname]", but here is what I did do.  First, I stop PostgreSQL (installed
from an RPM):

[root@s1 init.d]# /etc/rc.d/init.d/postgresql stop
$Stoping postgresql service:                              [  OK  ]

Then, I su to the postgres user:

[root@s1 init.d]# su - postgres

Then, I try running postgres like this:

bash$ postgres -d 5 -D /var/lib/pgsql/data dans_pgsql
invoking IpcMemoryCreate(size=1015808)
DEBUG:  database system was shut down at 2001-09-17 11:22:37 PDT
DEBUG:  CheckPoint record at (0, 305239168)
DEBUG:  Redo record at (0, 305239168); Undo record at (0, 0); Shutdown TRUE
DEBUG:  NextTransactionId: 3285885; NextOid: 498209
DEBUG:  database system is in production state
FindExec: searching PATH ...
ValidateBinary: can't stat "/bin/postgres"
FindExec: found "/usr/bin/postgres" using PATH
DEBUG:  connection: host=(null) user=postgres database=dans_pgsql
DEBUG:  InitPostgres
AATAL 1:  cannot find attribute 24 of relation
DEBUG:  proc_exit(1)
DEBUG:  shmem_exit(1)
DEBUG:  shutting down
DEBUG:  database system is shut down
DEBUG:  exit(1)
bash$ exit

Any more suggetions?

Thanks again!
Tauren


> -----Original Message-----
> From: Martijn van Oosterhout [mailto:kleptog@svana.org]
> Sent: Sunday, September 16, 2001 9:07 PM
> To: Tauren Mills
> Cc: Justin Clift; PostgreSQL General Mailing List
> Subject: Re: [GENERAL] Problem with database: FATAL 1: cannot find
> attribute 24
>
>
> On Sun, Sep 16, 2001 at 08:23:57PM -0700, Tauren Mills wrote:
> > We are getting this error message whenever we try to connect
> using psql, the
> > \c command in psql, the pg_dump command, the vacuum command, or the JDBC
> > driver:
> >
> > FATAL 1:  cannot find attribute 24 of relation ^MA
>
> Looks like corruption.
>
> An idea. Kill off the postmaster, then start postgres directly from the
> command line (I beleive it's just ./postgres [dbname]). That
> should get you
> in because i think it's one of the queries psql sends on startup
> that fouls
> up.
>
> Anyway, once you have a prompt, type:
>
> select * from pg_class;
>
> and
>
> select * from pg_attribute where attnum = 24;
>
> Look for corruption and other strange data.
>
> HTH,
> --
> Martijn van Oosterhout <kleptog@svana.org>
> http://svana.org/kleptog/
> > Magnetism, electricity and motion are like a three-for-two
> special offer:
> > if you have two of them, the third one comes free.
>


Re: Problem with database: FATAL 1: cannot find attribute 24

От
Tom Lane
Дата:
"Tauren Mills" <tauren@servlets.net> writes:
> Then, I try running postgres like this:
> bash$ postgres -d 5 -D /var/lib/pgsql/data dans_pgsql
> AATAL 1:  cannot find attribute 24 of relation

Since there aren't any system catalogs with as many as 24 columns, the
problem is clearly a level or two down from where the error is being
reported.  Try running that standalone backend under gdb with a
breakpoint set at elog, and get a stack trace when the error is reached.
(Note that each of the "debug" messages also goes through elog, so the
first elog entry is not the one you want.)

You might have to recompile with debugging symbols enabled to get any
useful information from gdb.

            regards, tom lane

Re: Problem with database: FATAL 1: cannot find attribute 24

От
"Tauren Mills"
Дата:
Hi Tom,

Thanks for the help!  I'm afraid I do not know how to do this.  Is there
somewhere that specifically explains how to run a standalone backend under
gdb?  How would I set a breakpoint at elog or get a stack trace?  Does the
RPM version of Postgres include debugging symbols, or would I need to
compile a separate version?

Thanks!
Tauren


> -----Original Message-----
> From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
> Sent: Monday, September 17, 2001 1:35 PM
> To: Tauren Mills
> Cc: Martijn van Oosterhout; Justin Clift; PostgreSQL General Mailing
> List
> Subject: Re: [GENERAL] Problem with database: FATAL 1: cannot find
> attribute 24
>
>
> "Tauren Mills" <tauren@servlets.net> writes:
> > Then, I try running postgres like this:
> > bash$ postgres -d 5 -D /var/lib/pgsql/data dans_pgsql
> > AATAL 1:  cannot find attribute 24 of relation
>
> Since there aren't any system catalogs with as many as 24 columns, the
> problem is clearly a level or two down from where the error is being
> reported.  Try running that standalone backend under gdb with a
> breakpoint set at elog, and get a stack trace when the error is reached.
> (Note that each of the "debug" messages also goes through elog, so the
> first elog entry is not the one you want.)
>
> You might have to recompile with debugging symbols enabled to get any
> useful information from gdb.
>
>             regards, tom lane
>