Обсуждение: "could not read block 0... " error followed by "database does not exist"

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

"could not read block 0... " error followed by "database does not exist"

От
Janet S Jacobsen
Дата:
Hi.  I am running Postgres 8.2.7 on a Linux system for over
a year now with no problems.

Today one of the database users reported the following error:

   psql: FATAL:  could not read block 0 of relation 1664/0/1262: read
   only 0 of 8192 bytes

I tried stopping and restarting the Postgres server for the database.
From the logfile:

   LOG:  received smart shutdown request
   LOG:  autovacuum launcher shutting down
   LOG:  shutting down
   LOG:  database system is shut down
   LOG:  database system was shut down at 2010-02-12 17:15:37 PST
   LOG:  autovacuum launcher started
   LOG:  database system is ready to accept connections

But when I try to connect to the database, I get the error message:

   FATAL:  database "subptf" does not exist

I tried stopping/restarting the database several times.  I also
killed all user connections to the database.

How do I fix this problem?

Thanks,
Janet




Re: "could not read block 0... " error followed by "database does not exist"

От
Tom Lane
Дата:
Janet S Jacobsen <JSJacobsen@lbl.gov> writes:
> Hi.  I am running Postgres 8.2.7 on a Linux system for over
> a year now with no problems.

> Today one of the database users reported the following error:

>    psql: FATAL:  could not read block 0 of relation 1664/0/1262: read
>    only 0 of 8192 bytes

Ugh.  1262 is pg_database --- apparently something has truncated your
pg_database table to zero bytes :-(.  Which certainly explains the
"no such database" errors.

Have you got any chance of pulling that physical file from a backup?
The one bright spot here is that pg_database is pretty static in most
installations, so you could probably use even a not-very-current copy.
The file you want is $PGDATA/global/1262.

I don't offhand know of any bugs in 8.2.7 that could cause this,
though that is rather an old version ... you might want to think
about an update to 8.2.something-recent.

            regards, tom lane

Re: "could not read block 0... " error followed by "database does not exist"

От
Scott Marlowe
Дата:
On Fri, Feb 12, 2010 at 7:11 PM, Janet S Jacobsen <JSJacobsen@lbl.gov> wrote:
> Hi.  I am running Postgres 8.2.7 on a Linux system for over
> a year now with no problems.
>
> Today one of the database users reported the following error:
>
>   psql: FATAL:  could not read block 0 of relation 1664/0/1262: read
>   only 0 of 8192 bytes

Sounds like a bad sector on your hard drive.  Got any recent backups?