当我试图升级Sentry时,我数据库中的一个表被损坏了。在阅读了有关vacuum和reindex的内容后,我能够将问题追踪到一个表中。
从任何其他表执行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'请避免像“好吧,去备份”这样的评论。我这么问是因为我没有备份。
另外,请避免像“好吧,如果你没有备份,狗屎就会发生”这样的评论。我之所以问这个问题,是因为在执行备份时出现了错误,并且没有创建任何备份。
此外,请避免与备份相关的任何其他无助的评论。真的。你这样帮不了我。
发布于 2018-09-13 09:57:21
在某些阶段,我已经能够转储和恢复单个表,如下所示。请注意,在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)https://stackoverflow.com/questions/52304743
复制相似问题