Postgres错误无效幻数0000

时间:2015-04-07 16:02:25

标签: postgresql foreman

这是我在运行postgres时收到的错误消息     服务器。我已经仔细搜索了试图寻找解决方案的互联网     还重新安装了postgres所以我没有选择但是要问它     这里。

11:51:05 postgres.1 | LOG:  database system was shut down at 2015-04-06 09:03:12 EDT
11:51:05 postgres.1 | LOG:  invalid magic number 0000 in log segment 000000010000000000000040, offset 0
11:51:05 postgres.1 | LOG:  invalid primary checkpoint record
11:51:05 postgres.1 | LOG:  invalid magic number 0000 in log segment 000000010000000000000040, offset 0
11:51:05 postgres.1 | LOG:  invalid secondary checkpoint record
11:51:05 postgres.1 | PANIC:  could not locate a valid checkpoint record
11:51:05 postgres.1 | LOG:  startup process (PID 898) was terminated by signal 6: Abort trap
11:51:05 postgres.1 | LOG:  aborting startup due to startup process failure
11:51:05 postgres.1 | exited with code 1

1 个答案:

答案 0 :(得分:1)

您的数据库文件已损坏;请参阅"Corruption" on the PostgreSQL wiki以获取建议和采取的第一步。

特别是,PostgreSQL在启动时读取的事务日志已损坏。您可能希望调查这是如何发生的 - 无论是狡猾的硬件还是假装保存最不可能的数据的磁盘。

如果您的数据库中没有您关心的数据(即您只是将其用于开发),最简单的方法是重置它。

找到主要的postgresql数据库目录(可能是/var/lib/postgresql/...)。在其中,您将找到名为baseglobal,... pg_xlog的目录。将主目录重命名为“something.OLD”或只删除其中的所有内容。 如果您删除了内容,您将永久地和不可挽回地销毁您的数据库及其内容,所以只有在您不关心的任何内容的情况下才能这样做。

然后运行sudo -u postgres initdb -D /path/to/main/dir以重新创建数据库结构。然后,您将有一个新的空设置,可以重新开始。根据需要从备份还原数据库。

如果这听起来很复杂,只需找到主目录并将其删除,然后重新安装即可。安装应该为您重新构建结构。