gpt4 book ai didi

database - 如何修复 PostgreSQL 中损坏的系统表

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:46 28 4
gpt4 key购买 nike

我刚刚尝试在一个相当大的 PostgreSQL 数据库集群上从 8.3.0 版升级到 9.0.4 版。在目标集群上创建新模式之前,一切看起来都很好。由于某种原因,它两次尝试创建组角色时死亡。

看了所有的剧本,很明显是在复制一个群角色4次。我备份了 8.3.0 数据库,很明显 pg_authid 表中有一行重复。

我尝试在单用户模式下启动数据库,以便尝试 REINDEX TABLE pg_authid。尝试创建具有重复值的新索引时失败。

我尝试删除有问题的组角色。这删除了 ​​pg_authid 中的 4 行之一,但似乎进一步混淆了事情。

我看到有人提到在 table 上完全吸尘可能会修复这种损坏,但我希望它能奏效。因此,在数据恢复的同时,我会寻找想法。

最佳答案

你有没有关注pg_upgrade steps确切地?如果是这样,您应该可以使用旧的数据目录,并且可以在必要时回滚到它……对吗? :(

REINDEX TABLE 不能解决您的问题,但是

# From old database
pg_dump -t my_problem_table(s) ... > my_screwed_up_data.sql
pg_dump -T my_problem_table(s) ... > my_not_screwed_up_data.sql


# Fix whatever isn't right
${EDITOR} my_screwed_up_data.sql

# In to a fresh database instance
cat my_screwed_up_data.sql | psql
cat my_not_screwed_up_data.sql | psql

可能会让你开始。您可能必须多次运行第二步和第三步,直到正确加载内容。希望只是您的系统目录包含虚假数据。

关于database - 如何修复 PostgreSQL 中损坏的系统表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6180065/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com