再次,请善待。我不是dba而且我继承了一些旧的postgress数据库。
运行postgres 7.4.7的一个非常古老的debian服务器填充了数据文件系统。我的一个同伙决定尝试重新索引,接着是真空吸尘器。所有这一切都惨遭失败,让我的空间更小。现在,当我运行' psql -h'作为postgres我得到了
' psql:致命:无法打开关系" pg_trigger":没有这样的文件或目录'。
我可以使用psql访问有问题的数据库。如果我是psql数据库'我可以运行select: function(start, end) {
....
$("#btnSave").one("click", function() {
....
}
}
但是' psql temp失败并出现上述错误。我确实有看似有效的'CREATE DATABASE temp;'
。哦,我在其他服务器上看到的没有postgres数据库。我的问题是:有没有办法解决上述错误或失败,有没有办法完全重置数据库?
请记住,我无法升级postgres(尽我所能)。 我希望有些事可能会有所帮助:
答案 0 :(得分:0)
哦,我在其他服务器上看到的没有postgres数据库
那很糟糕。
听起来有人(不是你,大概)试图DROP TABLE pg_somethingorother;
。由于pg_
表(也称为目录)是保存表名,触发器代码等的地方,因此这种表丢弃会导致许多问题。
有没有办法解决上述错误或失败,是否有办法完全重置数据库?
您之前说过,您有一些有效的pg_dump文件。我建议采取以下行动:
initdb
,然后加载转储文件(如果文件中有明文sql,类似于psql < dumpfile
;如果它不是文本,你将使用pg_load
)。/var/lib/postgres/data
- 包含base
的目录及其中的conf文件。initdb
从头开始,然后加载,就像在步骤1中一样。vacuum
语句,以便您将来不太可能遇到此问题。如果你不能使用足够旧的postgres来测试转储文件,那么你可以尝试将转储文件加载到更新的postgres中。在大多数情况下, 应该。但是,它可能会遇到一些问题。如果可行,请继续执行步骤2。如果它有点工作,但有一些错误,并且你不确定是什么,它仍然值得继续进行第2步和第2步。
如果转储文件不工作,您可能会受到冲击。但我会假设他们这样做,因为替代方案很难过。
对不起你,在这种情况下,祝你好运。