我不能在postgresql 9.5中使数据库变得愚蠢。问题仅出在1个数据库中,当我们从视图中选择数据时。它显示目录缺少128个属性。这有什么解决方案吗?表中没有选择,插入和删除操作的问题。我无法更新VIEWS或删除它们。请帮我删除解决问题的意见。
答案 0 :(得分:1)
您的数据库已损坏。
尝试找出受影响的表:
SELECT 183772::regclass;
你能得到这张桌子的描述吗?它应该有多少列?
如果pg_class
目录中的属性数与pg_attribute
中的实际属性数不对应,则会引发错误消息。这两个查询应返回相同的值,但在您的情况下,第一个将返回128 more 而不是第二个:
SELECT relnatts FROM pg_class
WHERE oid = 183772;
SELECT count(*) FROM pg_attribute
WHERE attrelid = 183772 AND attnum > 0;
我会从备份中恢复。
调查哪些列正确无误。
由于差异恰好是128,因此RAM中可能是bit flipped。你有fault tolerant RAM吗?如果没有,也许现在你有动力去获得一些。
检查您的硬件,特别是您的内存是否有错误!
获取最旧的备份并查看其中的内容
如果真的只有一位被翻转并且pg_class
中的数字被关闭了128,那么您可以为表183772更新relnatts
,并且您的问题将得到解决。< / p>