在PostgreSQL上创建数据库转储时出现错误

11

在尝试制作一个postgreSQL数据库转储时,我们遇到了以下错误并且进程立即停止。

使用的命令:

openbravo@master.akluck.com:~

07/26 11:48:11> pg_dump -U tad -h localhost -p 5932 -F c -b -v -f /home/openbravo/dump26072018.dmp openbravo

输出:

pg_dump: reading schemas

pg_dump: reading user-defined tables

pg_dump: schema with OID 67046 does not exist

pg_dump: *** aborted because of error

有人能指导我如何解决这个问题吗?

更新:

我按照这篇教程的步骤进行了操作:

http://www.aukema.org/2011/06/fixing-complex-corruption-in-my-dna.html

我发现在pg_tables表中有一些没有schemaname的对象。

enter image description here

但我不知道如何在pg_tables表中更新这些缺失的schemanames。该教程的最后一部分并不是很清楚。希望有人可以给些建议。


通过关闭数据库并将数据文件(Ubuntu上的/var/lib/postgresql)复制到其他地方来备份数据集,然后尝试按此主题中详细说明的修复目录表:https://www.postgresql.org/message-id/26697.1156945365%40sss.pgh.pa.us - Linas Valiukas
你正在运行哪个版本?(select version)。我猜你在这里找不到你的OID:select oid, nspname from pg_namespace?你能试着在这些系统目录中找到它吗?并且你能告诉我们它是否有什么特别之处吗?(pg_class.relnamespace, g_operator.oprnamespace, pg_conversion.connamespace, pg_opclass.opcnamespace, pg_aggregate.aggnamespace, pg_proc.pronamespace) - tukan
@tukan,这是9.1.19。 - Rinsad Ahmed
好的,那是一个开始。你在任何目录中找到它了吗? - tukan
嗯,我也遇到了一个“OID为XXXXXXX的模式不存在”的错误,但是从pg_class表中选择该OID的查询没有返回结果。 - Michael K
显示剩余2条评论
1个回答

0

终于找到一种方法来排除损坏的表进行备份,具体如下:

pg_dump --exclude-table=ad_context_info -h localhost -p 5932 -U postgres > dumpsabnew.dmp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接