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 ]
これらのエラーの原因と修正方法を教えてください。
Initdbは一度だけ実行する必要があります。設定ファイルと(通常は)実際のデータベースを保持するディレクトリが作成されます。あなたはすでにそれをすでにすでに行っています。その他の場合、編集するpg_hba.confはありません。
したがって、完全な再インストールを行わない限り、_postgresql initdb
を再度実行しないでください。
ここ から:
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
RHEL/CentOS 7やFedoraなどのsystemdベースのシステムでは、initdbを実行する手順が多少異なります。これは、もはや存在しないinitスクリプトでは行われなくなり、新しい手順は アップストリームの指示 にかなり近づきました。
最初にsu
をpostgres
ユーザーに送信し、次にinitdb
またはpg_ctl initdb
を実行する必要があります。 Red Hatビルドを使用している場合は、デフォルトで自動的にデフォルトのデータディレクトリ/var/lib/pgsql
が選択されるため、データディレクトリを指定する必要はありません。
例えば:
# su - postgres
$ pg_ctl initdb
$ exit
#
もちろん、最初のインストール時に、最初のデータディレクトリを設定するためにこれを1回だけ実行します。完全に新しいインストールを作成したり、災害から復元したりしない限り、これを再度行うことはありません。
CentOS 6でPostgreSQL 9.3を使用して、同じ問題が発生しました。
/var/lib/pgsql/9.3/dataフォルダーを削除してから、コマンドを再実行しました
Sudo service postgresql-9.3 initdb
... dbサービスを再び正常に初期化しました。