Re: ERROR: could not read block 3 in file "base/12511/12270"

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: ERROR: could not read block 3 in file "base/12511/12270"
Дата
Msg-id CAKFQuwY2fiNcQ8BkjidBFae7ODWTvZMqV5J7rWL7LXFi1kYrtA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: ERROR: could not read block 3 in file "base/12511/12270"  (Adrian Klaver <adrian.klaver@aklaver.com>)
Ответы Re: ERROR: could not read block 3 in file "base/12511/12270"  (<pbj@cmicdo.com>)
Список pgsql-general
On Wed, Dec 23, 2015 at 5:48 PM, Adrian Klaver <adrian.klaver@aklaver.com> wrote:
On 12/23/2015 04:17 PM, Paul Jones wrote:
I have been having disk errors that have corrupted something in
my postgres database.  Other databases work ok:

Running on Ubuntu 10.04.

paul@kitanglad:~$ psql -U postgres
psql (9.4.5)
Type "help" for help.

postgres=# SELECT pg_catalog.pg_is_in_recovery();
ERROR:  could not read block 3 in file "base/12511/12270": read only 4096 of 8192 bytes
postgres=# \c pjtest
You are now connected to database "pjtest" as user "postgres".
pjtest=# SELECT pg_catalog.pg_is_in_recovery();
  pg_is_in_recovery
  -------------------
   f
(1 row)


Since this is the "postgres" database, dropping and re-creating it
doesn't seem possible.  pg_dump also gets the same error when I run
it on "postgres" so pg_basebackup will probably get the same error.

The only thing I can think of is to create a completely new data directory
with initdb and pg_dump/restore all the databases in the cluter to the
new data directory.

Is this my only option?

No, the 'postgres' database is one of the system databases created from a template


​This isn't the best characterization...​the "postgres" data is not a "system" database but rather a convenient default user database.  Maybe I'm being overly picky here but seeing "system" in this context does have a connotation that we really don't want to impart onto the "postgres" database.

It is named such because the default user is likewise "postgres" and most utilities when not provided with a database name will use the O/S user's name which, for administrative tasks, is likely to be "postgres" (you really shouldn't use root for DB-admin stuff) and thus those commands will be able to connect without much, if any, additional options supplied.

Its presence, absence, or modification in now way alters the fundamental operation of PostgreSQL; though its lack may frustrate users acclimated to using said defaults.

David J.

В списке pgsql-general по дате отправления:

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: ERROR: could not read block 3 in file "base/12511/12270"
Следующее
От:
Дата:
Сообщение: Re: ERROR: could not read block 3 in file "base/12511/12270"