Исправление поврежденного стола - PullRequest
0 голосов
/ 13 сентября 2018

Я пытался обновить Sentry, и таблица в моей базе данных испортилась.После прочтения о вакууме и переиндексации я смог отследить проблему до одной таблицы.

Выполнение select * из любой другой таблицы работает просто отлично, но эта конкретная проблема кажется проблематичной.Есть ли способ, которым я могу исправить таблицу, или, в худшем случае, как-то сбросить все другие таблицы?

pg_dump -T corrupt_table > bkp.sql не работает:

bash-4.4# pg_dump -U XXXXXX -T sentry_identityprovider sentry > bkp.sql
pg_dump: [archiver (db)] query failed: ERROR:  cache lookup failed for attribute 1 of relation 45941
pg_dump: [archiver (db)] query was: SELECT tableoid, oid, conname, confrelid, pg_catalog.pg_get_constraintdef(oid) AS condef FROM pg_catalog.pg_constraint WHERE conrelid = '45954'::pg_catalog.oid AND contype = 'f'

Пожалуйста, избегайте комментариев типа "Ну, иди и получи свои резервные копии ".Я спрашиваю, потому что у меня нет резервной копии.

Также, пожалуйста, избегайте комментариев типа «Ну, если у вас нет резервных копий, случается дерьмо».Я спрашиваю, потому что при выполнении резервного копирования произошла ошибка, и ни одна из них не была сделана.

Также, пожалуйста, избегайте любых других беспомощных комментариев, связанных с резервными копиями.В самом деле.Ты не помогаешь мне таким образом.

1 Ответ

0 голосов
/ 13 сентября 2018

На каком-то этапе я смог сбросить и восстановить отдельную таблицу, как показано ниже.Обратите внимание на справку для pg_dump, что вы должны быть в состоянии сделать полный дамп и исключить поврежденную таблицу, никогда не пытаясь это сделать.Не уверен, почему у вас ничего не получится, дамп единственной хорошей таблицы может дать ответ.Надеюсь, это работает для вас.

pg_dump -t good_table old_DB -U youruser -f good_table_BUP.sql  

psql -f good_table_BUP.sql  new_DB

 -t, --table=TABLE            dump the named table(s) only
 -T, --exclude-table=TABLE    do NOT dump the named table(s)
...