【问题标题】:Postgresql error: could not open segment 1 of relation base/20983/2416Postgresql 错误:无法打开关系 base/20983/2416 的段 1
【发布时间】:2011-06-06 02:48:09
【问题描述】:

我正在运行 Postgresql 查询并收到以下错误:

ActiveRecord::StatementInvalid (PGError: ERROR: could not open segment 1 of relationship base/20983/24161 (target block 5046584): No such file or directory

查询的格式为 'SELECT "locations".* FROM "locations" WHERE ("locations"."id" IN (115990, 78330, 77891, 78248, ...)',其中大约 600 个 id IN 子句 - 我知道这不是一个最佳查询,但这是我目前必须使用的!

服务器在 x86_64-pc-linux-gnu 上运行 PostgreSQL 8.4.6,由 GCC gcc-4.4.real (Ubuntu 4.4.1-4ubuntu9) 4.4.1 编译,64 位。还安装了 Postgis 1.5,并且位置表包含几何列。

任何人都知道可能导致错误的原因是什么?谢谢!

【问题讨论】:

    标签: postgresql postgis


    【解决方案1】:

    该错误表明严重的数据库损坏,包含表数据(系统目录中的某些内容?)的数据库文件之一丢失。我怀疑除了从备份中恢复数据之外,您还能做很多事情。

    【讨论】:

    • 谢谢,不是我希望听到的,但至少我现在知道答案了!有没有办法获得有关错误的更多信息?奇怪的是,如果我对整个表进行完全选择,我会返回所有记录,但查询会引发错误。因此,我猜测它与索引/主键被损坏有关,所以希望我能重建它......
    • 如果你这样做 select oid::regclass from pg_class where relfilenode = 24161 应该告诉你哪个关系(表或索引)有问题。您可以使用“-P”选项启动 postgresql,以强制它在尝试重建时避免使用索引来访问系统表。但是恕我直言,您的目标应该是使事情达到可以转储数据并重建数据库的程度,因为这可能只是您当前问题的许多问题中的第一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 2013-07-03
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多