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