postgresql не может переиндексировать template1.pg_class_oid_index - PullRequest
0 голосов
/ 21 марта 2020

У меня проблема с тем, что база данных template1 имеет поврежденный индекс pg_class_oid_index, а команда psql жалуется и просит ее переиндексировать. Тем не менее, я не могу подключиться к нему, потому что его нужно переиндексировать! Как обойти это?

$ psql -X template1
psql: FATAL:  index "pg_class_oid_index" contains unexpected zero page at block 3
HINT:  Please REINDEX it.
$ reindexdb --all
reindexdb: reindexing database "gitlabhq_production"
reindexdb: reindexing database "postgres"
reindexdb: reindexing database "template1"
reindexdb: could not connect to database dbname=template1: FATAL:  index "pg_class_oid_index" contains unexpected zero page at block 3
HINT:  Please REINDEX it.
$ psql -X postgres
psql (9.6.11)
Type "help" for help.

postgres=# reindex index template1.pg_class_oid_index;
ERROR:  schema "template1" does not exist
postgres=# \c template1;
FATAL:  index "pg_class_oid_index" contains unexpected zero page at block 3
HINT:  Please REINDEX it.
Previous connection kept
postgres=#
$ export PGOPTIONS="-P"
$ psql template1
psql: FATAL:  index "pg_class_oid_index" contains unexpected zero page at block 3
HINT:  Please REINDEX it.
$ postgres --single -D data/ template1
FATAL:  index "pg_class_oid_index" contains unexpected zero page at block 3
HINT:  Please REINDEX it.
$ postgres --single -P -D data/
FATAL:  database "gitlab-psql" does not exist
$ postgres --single -P -D data template1

PostgreSQL stand-alone backend 9.6.11
backend> reindex index pg_class_oid_index;
ERROR:  index "pg_class_oid_index" contains unexpected zero page at block 3
HINT:  Please REINDEX it.
STATEMENT:  reindex index pg_class_oid_index;

backend> 

Я не могу использовать команду reindexdb и не могу подключиться к ней напрямую, однопользовательский режим не помог, а переменная окружения PGOPTIONS не помогло как предложено на https://grokbase.com/t/postgresql/pgsql-general/07bhn4xnnc/hint-please-reindex-it не помогло. Пожалуйста, порекомендуйте. Спасибо.

1 Ответ

0 голосов
/ 21 марта 2020

Повторная индексация всей таблицы, похоже, исправила мою проблему.

$ postgres --single -P -D data template1

PostgreSQL stand-alone backend 9.6.11
backend> reindex system template1;
CTRL-D
$ postgres --single -P -D data template1

PostgreSQL stand-alone backend 9.6.11
backend> $

И я смог продолжить обновление Gitlab.

...