是否可以重建pg_depend?
Is it possible to rebuild pg_depend?
我的 PostgreSQL 9.4 数据库受到 BDR 中以下错误的影响:
https://github.com/2ndQuadrant/bdr/issues/309
简而言之,BDR 中的错误导致 pg_depend
system catalog 中缺少依赖项。现在,当我使用 pg_dump
时,对象被乱序转储,如果不进行手动编辑则转储无法使用。
有没有办法让 PostgreSQL 在 pg_depend
中重建依赖关系而不用从头重建数据库?
不,因为该信息不是多余的(那将是一个问题)。
手动打乱 pg_depend
可能会使事情变得更糟。
您最好的选择是创建一个仅模式转储 (pg_dump --section=pre-data
) 并手动处理该转储,直到您可以将其加载到新数据库中(某些依赖项仍会丢失,例如拥有序列的列) .
一旦你成功了,使用 ALTER
语句来调整你注意到缺少的更多依赖项。
一旦您对结果感到满意,转储数据库的其余部分(pg_dump --section=data
和 pg_dump --section=post-data
)并按此顺序将它们恢复到数据库中。
恐怕你没有比这更好的了。
我的 PostgreSQL 9.4 数据库受到 BDR 中以下错误的影响:
https://github.com/2ndQuadrant/bdr/issues/309
简而言之,BDR 中的错误导致 pg_depend
system catalog 中缺少依赖项。现在,当我使用 pg_dump
时,对象被乱序转储,如果不进行手动编辑则转储无法使用。
有没有办法让 PostgreSQL 在 pg_depend
中重建依赖关系而不用从头重建数据库?
不,因为该信息不是多余的(那将是一个问题)。
手动打乱 pg_depend
可能会使事情变得更糟。
您最好的选择是创建一个仅模式转储 (pg_dump --section=pre-data
) 并手动处理该转储,直到您可以将其加载到新数据库中(某些依赖项仍会丢失,例如拥有序列的列) .
一旦你成功了,使用 ALTER
语句来调整你注意到缺少的更多依赖项。
一旦您对结果感到满意,转储数据库的其余部分(pg_dump --section=data
和 pg_dump --section=post-data
)并按此顺序将它们恢复到数据库中。
恐怕你没有比这更好的了。