postgresqlのインストール:initdbデータディレクトリが空ではありませんか?


17

postgresqlデータベースを作成しようとしています。

PostgreSQLをインストールするときに、次のコマンドを発行しました。

sudo yum install postgresql postgresql-server

後で構成ファイルを変更しました:

sudo vim /var/lib/pgsql/data/pg_hba.conf

として修正

local   all         all                               trust
host    all         all         127.0.0.1/32          trust
host    all         all         ::1/128               trust
host    all         all         0.0.0.0/0             md5

私はpostgresqlサービスを起動しようとしていますが:

sudo service postgresql initdb

> Data directory is not empty!                               [FAILED]

sudo chkconfig postgresql on

sudo service postgresql start

Starting postgresql service:                               [  OK  ]

これらのエラーの原因と修正方法を教えてください。

回答:


18

Initdbは一度だけ実行する必要があります。構成ファイルと(通常)実際のデータベースを保持するディレクトリを作成します。すでにそれをすでに行っていることは明らかです。それ以外の場合、編集するpg_hba.confはありません。

したがって、postgresql initdb完全に再インストールしない限り、再度実行しないでください。


返信をありがとう..私はそれを2回実行します...あなたはそれがインストールの問題ではないことを意味します.
sridhar

私はあなたのインストールに問題がないことを意味します、少なくともあなたが示したものではありません。失敗しているのは、initdbを2回以上実行することだけです。失敗するはずです。他のすべてはOKと表示されます。他に問題がある場合は、説明していただければ助かります。
ジェニーD

どうもありがとう..それは問題ではない..問題に直面した場合、私はあなたにお知らせします
..-sridhar

15

ここから:

次のinitdbように実行しているときに、Postgres DBを完全に消去して再インストールする場合:

service postgresql-9.2 initdb -E 'UTF8' --pgdata="/foo/bar/"

次のサービスエラーが発生する可能性があります。

データディレクトリは空ではありません![失敗]

修正するには(これが核のオプションです-すべてのdbデータが消去されます!)

Amazon Linux(2014-x)の場合:

rm -rf /var/lib/pgsql9/data

CentOS(6.x)で

rm -rf /var/lib/pgsql/9.2/data

ここでinitdbコマンドを再試行すると、今度は機能するはずです。

service postgresql-9.2 initdb


4

RHEL / CentOS 7やFedoraなどのsystemdベースのシステムでは、initdbを実行する手順は多少異なります。これはinitスクリプト(もう存在しない)によって行われなくなり、新しい手順はアップストリームの指示にずっと近づきまし

最初supostgresユーザーに対して、次にinitdbまたはを実行する必要がありpg_ctl initdbます。Red Hatビルドを使用している場合、デフォルトで自動的にデフォルトのデータディレクトリが選択されるため、データディレクトリを提供する必要はありません/var/lib/pgsql

例えば:

# su - postgres
$ pg_ctl initdb
$ exit
#

もちろん、最初のインストール時にこれを一度だけ実行して、初期データディレクトリを設定します。完全に新しいインストールを作成するか、災害から復旧しない限り、再度行うことはありません。


3

CentOS 6でPostgreSQL 9.3を使用して、同じ問題が発生しました。

/var/lib/pgsql/9.3/dataフォルダーを削除し、コマンドを再実行しました

sudo service postgresql-9.3 initdb

...これにより、dbサービスが再び正常に初期化されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.