(PostgreSQL的)错误:无法打开关系
问题描述:
我得到这个奇怪的错误(PostgreSQL的)错误:无法打开关系
Caused by: org.postgresql.util.PSQLException: ERROR: could not open
relation base/17369/1684: No such file or directory
我如何恢复它? 任何想法?
谢谢
答
您丢失了与表1684和数据库17369相关的文件。检查目录库/ 17369中的名称为1684的存在文件 。
你能确定它是表:
1)获取数据库名称:select * from pg_database where oid=17369
2)获取表名(连接到受影响的数据库):select * from pg_class where oid=1684
有可能是没有更多你可以做。只从备份中恢复。
答
可能有多种原因。如果合理,最好的办法是在通过诊断程序运行硬件后从备份中恢复。
如果不希望从备份中恢复,那么您需要停止Postmaster,制作数据库的副本,并尽快获得专业帮助。数据可能可以或不可以恢复,你需要知道这件事正在进行。另外,我会建议超出Craig指出的链接,在这种情况下(可能会删除文件),从复制中恢复,最好在另一个系统上的整个文件系统的块级拷贝。
FWIW我观察到PostgreSQL在严重滥用的硬件上运行,并且在硬件超出限制时出现许多索引损坏问题(例如,数据库服务器位于热门,不通风的衣柜中的门层以上),但这看起来不像一个(索引损坏相对容易修复,但通常错误信息有点不同)。
现在,另外,它可以有可能与当前数据库和备份中恢复数据。很明显,我们不会知道这一点,直到尝试它。
由什么查询产生?这可能很小,但假设它不是。请阅读并按照以下说明紧急*:http://wiki.postgresql.org/wiki/Corruption。然后编辑你的问题,包括基本信息,如Pg版本,导致错误的命令,PostgreSQL日志文件的内容,操作系统,文件系统,最近断电事件,崩溃,磁盘问题等。同时显示'pg_test_fsync'的输出和'postgresql.conf'中'fsync'参数的值。 – 2013-04-08 10:54:24
很可能是磁盘故障或文件意外删除。 – 2013-04-09 15:59:18
做什么克雷格林格说。 – 2013-05-15 01:18:26