gpt4 book ai didi

database - 无法以 'postgres' 用户身份登录到 'postgres' 数据库

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

我无法以“postgres”用户身份登录到“postgres”数据库。操作系统:REHL 服务器版本 6.3PostgreSQL 版本:8.4有一个数据库“jiradb”用作 JIRA 6.0.8 的后端。

当我发出命令时

[root ~]#psql postgres postgres
用户postgres的密码:*******
psql: FATAL: 无法打开与 OID 2696 的关系

如何修复此错误并登录“postgres”数据库。如果您需要更多详细信息,请问我。我是 postgres 数据库的新手。

谢谢。

最佳答案

您的 postgres 数据库已损坏。 oid 2696是系统保留的oid,所以是系统表,他们的oid是跨数据库跨版本稳定的。在我的 9.4 上查找,它是:

regress=> select relname from pg_class where oid = 2696;
relname
----------------------------------
pg_statistic_relid_att_inh_index
(1 row)

regress=> \d pg_statistic_relid_att_inh_index
Index "pg_catalog.pg_statistic_relid_att_inh_index"
Column | Type | Definition
------------+----------+------------
starelid | oid | starelid
staattnum | smallint | staattnum
stainherit | boolean | stainherit
unique, btree, for table "pg_catalog.pg_statistic"

所以您在系统表 pg_catalog.pg_statistic 上的索引 pg_statistic_relid_att_inh_index 的数据目录中有一个丢失的文件

这不应该发生。您的数据目录中至少有有限的数据损坏。

根据 PostgreSQL wiki - corruption,您的第一个操作应该是停止数据库并为整个数据目录制作完整的文件系统级副本。 .

然后检查可能的原因。最近的磁盘问题?意外/突然关闭,然后是 fsck,可能在具有非崩溃安全文件系统的系统上,不安全的安装选项(例如 ext3/ext4 data=writeback),不安全的配置,如ext[34]-on-LVM-on-md 对旧内核等有障碍。还要确保您使用的是最新的 8.4 版本。

只有将数据目录的完整文件系统级副本复制到安全的只读存储后,才启动数据库备份(但不是使用它)并查看是否可以连接到 jiradb 例如psql jiradb。如果可以,立即执行 jiradb 和任何其他具有有值(value)数据的数据库的 pg_dump

不要继续使用损坏的数据目录。现在是进行转储和重新加载的好时机 - 对每个数据库执行一个 pg_dumpall --globals-only,一个 pg_dump -Fc,然后将数据目录移到一边,重新-initdb,然后重新开始全新安装。您甚至可能想同时升级到不太古老的 PostgreSQL。


请注意,通常可以就地解决此类问题。在这种情况下,如果您损坏的数据库不是不重要且通常为空的 postgres 数据库,您可以在禁用系统索引的单用户模式下启动 PostgreSQL,然后 REINDEX 损坏的索引。

关于database - 无法以 'postgres' 用户身份登录到 'postgres' 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29774766/

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