pg_ctlで「データベースクラスタのディレクトリではありません」というエラーになる場合の対処

pg_ctlで「データベースクラスタのディレクトリではありません」というエラーになる場合の対処

Posted at July 12,2018 12:03 AM
Tag:[PostgreSQL]

PostgreSQLのpg_ctlで「データベースクラスタのディレクトリではありません」というエラーになる場合の対処方法について紹介します。

1.問題点

postgresqlのサーバ起動で

$ pg_ctl start
pg_ctl: ディレクトリ "/var/lib/pgsql/9.6/data" はデータベースクラスタのディレク トリではありません

というエラーになり、サーバの起動ができませんでした。

/var/lib/pgsql/9.6/data

というディレクトリは存在します。

ということで、「データベースクラスタのディレクトリではありません」というエラーになる場合の対処方法について紹介します。

2.対処

postgresユーザで、

$ pg_ctl start

の前に、init_dbを実行します。

以下、実施画面です。

$ initdb
データベースシステム内のファイルの所有者は"postgres"ユーザでした。
このユーザがサーバプロセスを所有しなければなりません。
 
データベースクラスタはロケール"ja_JP.UTF-8"で初期化されます。
したがってデフォルトのデータベース符号化方式はUTF8に設定されました。
initdb: ロケール"ja_JP.UTF-8"用の適切なテキスト検索設定が見つかりません
デフォルトのテキスト検索設定はsimpleに設定されました。
 
データベージのチェックサムは無効です。
 
ディレクトリ/var/lib/pgsql/9.6/dataの権限を設定しています ... ok
サブディレクトリを作成しています ... ok
デフォルトのmax_connectionsを選択しています ... 100
デフォルトの shared_buffers を選択しています ... 128MB
selecting dynamic shared memory implementation ... posix
設定ファイルを作成しています ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
データをディスクに同期しています...ok
 
警告: ローカル接続向けに"trust"認証が有効です。
pg_hba.confを編集する、もしくは、次回initdbを実行する時に-Aオプショ
ン、または、--auth-localおよび--auth-hostを使用することで変更するこ
とができます。
 
Success. You can now start the database server using:
 
    pg_ctl -D /var/lib/pgsql/9.6/data -l logfile start

このコマンドの実行後、サーバの起動ができました。

$ pg_ctl start
サーバは起動中です。
-bash-4.2$ < 2018-07-11 15:50:17.918 JST > LOG:  ログ出力をログ収集プロセスにリ ダイレクトしています
< 2018-07-11 15:50:17.918 JST > ヒント:  ここからのログ出力はディレクトリ"pg_log"に現れます。
関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)