web-dev-qa-db-ja.com

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

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  ]

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

17
sridhar

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

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

18
Jenny D

ここ から:

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

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

15
sv.

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

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

例えば:

# su - postgres
$ pg_ctl initdb
$ exit
#

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

4
Michael Hampton

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

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

Sudo service postgresql-9.3 initdb

... dbサービスを再び正常に初期化しました。

3
Fuzzy Analysis