Postgres 错误无效幻数 0000

Postgres Error invalid magic number 0000

这是我在 运行 我的 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

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

特别是,PostgreSQL 在启动时读取的事务日志已损坏。您可能希望调查这是如何发生的 - 要么是不可靠的硬件,要么是一个磁盘假装保存了数据,但实际上并没有。

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

找到主要的 postgresql 数据库目录(可能在 /var/lib/postgresql/... 之类的地方)。您会在其中找到名为 baseglobal、... pg_xlog 的目录。将该主目录重命名为 "something.OLD" 或删除其中的所有内容。 如果您删除内容,您将永久且不可恢复地破坏您的数据库及其内容,所以只有在您不关心任何内容时才这样做。

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

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