Обсуждение: Re: PostgreSQL; Strange error

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

Re: PostgreSQL; Strange error

От
jdassen@cistron.nl (J.H.M. Dassen (Ray))
Дата:
Bengt Månsson <name@some.site> wrote:
>I use RH7, Apache, PHP4 and PostgreSQL

Your problem is a RDBMS problem, not a WWW server one. The PostgreSQL
mailing lists (see http://www.postgresql.org/users-lounge/index.html) are a
better place to ask.

>Warning: PostgreSQL query failed: FATAL 1: my bits moved right off the end
>of the world! Recreate index pg_attribute_relid_attnum_index.

>I don't understand any of this. Never heard of that index.

It starts with "pg_", so it's Postgres' meta-data (internal administration).

>What does it mean?

Apparently one of Postgres' internal indexes got corrupted.

> What can I do?

Follow the suggestion given in the warning: recreate index
pg_attribute_relid_attnum_index, presumably [*] using something like

    DROP INDEX pg_attribute_relid_attnum_index;
    CREATE UNIQUE INDEX pg_attribute_relid_attnum_index ON
        pg_attribute(attrelid,attnum);

(as database user 'postgres').

HTH,
Ray

[*] I'm just guessing from '\d pg_attribute_relid_attnum_index' and '\d
pg_attribute' - back up your database (using "pg_dump") before trying this.
--
Think of computer security like powertools. The day you think you are
totally safe is the day you end up hurt.
    Alan Cox

Re: Re: PostgreSQL; Strange error

От
Tom Lane
Дата:
jdassen@cistron.nl (J.H.M. Dassen (Ray)) writes:
> Bengt M�nsson <name@some.site> wrote:
>> Warning: PostgreSQL query failed: FATAL 1: my bits moved right off the end
>> of the world! Recreate index pg_attribute_relid_attnum_index.

This is an internal "can't happen" failure condition, presumably arising
from some weird corner-case bug in btree index manipulation.  We have seen
sporadic reports of this failure, mostly from people using lots of large
objects, but no one has yet provided a test case that allows the problem
to be reproduced from scratch.  When I'm in an optimistic mood I think
that the bug might be fixed in 7.1, but it's hard to say for sure
because I've never seen this failure happen myself.

> Follow the suggestion given in the warning: recreate index
> pg_attribute_relid_attnum_index, presumably [*] using something like

>     DROP INDEX pg_attribute_relid_attnum_index;
>     CREATE UNIQUE INDEX pg_attribute_relid_attnum_index ON
>         pg_attribute(attrelid,attnum);

I think that will probably crash and burn :-(.  To reconstruct a broken
system index you need to use the REINDEX command.  See the manual for
the proper procedure for using REINDEX on system indexes; it's a tad
arcane.

            regards, tom lane