PostgreSQLエラー「データベースを初期化中: mkdir: ディレクトリ `/var/lib/pgsql/data/pg_log' を作成できません: ファイルが存在します」の原因と解決方法

LinuxサーバでPostgreSQLを起動しようとすると、

データベースを初期化中: mkdir: ディレクトリ `/var/lib/pgsql/data/pg_log' を作成できません: ファイルが存在します

といったエラーが出て困ることがあるかもしれない。

《例》
[root@nobuneko data]# /etc/rc.d/init.d/postgresql start
データベースを初期化中: mkdir: ディレクトリ `/var/lib/pgsql/data/pg_log' を作成できません: ファイルが存在します
[失敗]
postgresql サービスを開始中: [失敗]
/var/log/messagesを見てみると、以下のエラーメッセージが記録されていた。

Oct 31 23:12:02 nobuneko postgres[12846]: [1-1] FATAL: "/var/lib/pgsql/data" is not a valid data directory
Oct 31 23:12:02 nobuneko postgres[12846]: [1-2] DETAIL: File "/var/lib/pgsql/data/PG_VERSION" is missing.

なんと、エラーメッセージによると、/var/lib/pgsql/data/配下にあるべき「PG_VERSION」というファイルがなくなっていることがPostgreSQLが起動できない原因のようだった。

他のまともにPostgreSQLが動作しているLinuxサーバで確認してみると、/var/lib/pgsql/data/配下に「PG_VERSION」というファイルがあったので、それを見てみる。

ls -ahlで見てみると、権限などは、

-rw------- 1 postgres postgres 4 10月 23 00:24 PG_VERSION

となっており、このファイルの中身は、

[root@nobuneko2 data]# cat PG_VERSION
8.1

となっていた。
つまり、「PG_VERSION」の中身は、「8.1」という文字列だけか...。PostgreSQLのバージョン番号を書いているだけなのだろうけれど、なんて単純なファイル(笑)。
そこで、PostgreSQLの起動に失敗しているLinuxサーバの/var/lib/pgsql/data/配下にまともにPostgreSQLが動作しているサーバのPG_VERSIONファイルをコピーしてそのまま設置してみた(ファイルの権限もまともに動作しているサーバと同じにしておく)。

すると、PostgreSQLの起動に成功した。

原因と解決方法が分かり、嬉しいのだけれど、そもそも、「PG_VERSION」ファイルが何故ないのかという理由を考えると...、そうかぁ...ハードディスクが壊れたのでファイルが色々と消えたんだっけ、ということを今さらながら思い出す。

「PG_VERSION」ファイルが消えていたのは、そんな恐ろしい理由...。

つまり、誤って手動で「PG_VERSION」ファイルだけを削除したのでもない限り、今回のようなエラーメッセージにはなかなか遭遇しないのかもなぁ。

前へ

PostgreSQLエラー「FATAL: no pg_hba.conf entry for host "127.0.0.1", user "postgres", database "データベース名", SSL off」の原因と解決方法

次へ

「Intel Boot Agent」が立ち上がる原因の1つ