PostgreSQL 9.3がUbuntuで起動しないのはなぜですか?


13

Ubuntu 12.04および13.04を実行している2つのVMのAPTリポジトリからPostgreSQL 9.3を正常にインストールしましたが、Ubuntu 12.04を実行しているホストマシンに正しくインストールできません。

インストール(今度は)はうまくいったようですが、おそらく私には理解できないエラーがあります:

* No PostgreSQL clusters exist; see "man pg_createcluster"
Setting up postgresql-9.3 (9.3.0-2.pgdg12.4+1) ...
Creating new cluster 9.3/main ...
  config /etc/postgresql/9.3/main
  data   /var/lib/postgresql/9.3/main
  locale en_US.UTF-8
  port   5432
update-alternatives: using /usr/share/postgresql/9.3/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.

だから、私は自分をPostgreSQLユーザーとして追加しようとしますが、私はこれを取得します:

createuser: could not connect to database postgres: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

PostgreSQLがシステムモニターで実行されているのを見ることができず、/ var / run / postgresql /フォルダーにファイルがありません...完全に空です。

編集:VMの/ var / run / postgresql /に9.3-main.pidというファイルがあります

/ var / log / postgresqlにあるホストマシンのログファイルには何もありません

だから...私のVMで起こっていないことはここで何が起こっているのですか?先ほど言ったように、PostGISやPGAdminを含むVMの他のインストールは完璧になりました...このホストマシンが通過しない理由はわかりません...


実際に/var/run/postgresqlディレクトリを持っていますか?インストールが成功した後のある段階で、そのフォルダは私のマシンにありませんでした。configは、使用するディレクトリについて何と言っていますか?
コリン 'tハート

@ Colin'tHart私はそのディレクトリを持っています...しかしその中には何もありません... VMの中で、9.3-main.pidと呼ばれるファイルが作成されていますその設定情報はどこにありますか?
DPSS13年

postgresql.conf上記によると、configディレクトリにあり/etc/postgresql/9.3/mainます。また、おそらくにあるログファイルも確認する必要があります/var/log/postgresql
コリン 'ハート

@ Colin'tHartログファイルがです...構成ファイル-そして、これがあなたが望んでいることだと思う-external_pid_file が明示的に設定されていない場合、余分なPIDファイルは書き込まれません。external_pid_file = '/var/run/postgresql/9.3-main.pid'
DPSSpatial

そのディレクトリにソケットファイルがありますか、それとも本当に完全に空ですか?
コリン 'ハート

回答:


16

PostgreSQLのインストール時に、ロケール設定が適切に構成されていませんでした。パージして再インストールしても解決しませんでした。私はここの指示に従いましたそしてそれは私のためにトリックをしました。

以下に再現されるリンク情報の重要な部分:

この問題は次のように現れました。

warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
...
are supported and installed on your system.

最初のものは、実行することで非常に簡単に解決できました:

#dpkg-reconfigure locales

...および優先ロケールを選択します。

しかし、その後もPostgreSQLは起動を拒否しました。これは、インストールプロセスがインストール時にクラスターを作成しようとしたが、ロケールが悪いために実行されなかったためです。したがって、次を実行してこのステップをやり直す必要があります。

#pg_createcluster 9.3 main --start

(PostgreSQL 9.3バージョンの場合)

そのステップの後、PostgreSQLは以下を介して問題なく起動します。

#/etc/init.d/postgresql start

2
私を助けた。ロケールが修正されても、パージと再インストールが役に立たないのは本当に残念です。これは私の人生の2時間を無駄にしました:
エッシャー

pg_createclusterクラスターが既に存在することを示している場合は、まずクラスターを削除する必要があります(これにより、クラスター内のデータが消去されるため、バックアップがあることを確認してください)pg_dropcluster 9.3 main
フロリアンブラッカー

6

この問題を既に解決していることを願っていますが、ソースが異なると思われる同様の問題に直面しています。問題が解決しない場合は、私の経験が役に立つかもしれません。

Ubuntuでの9.3の問題は、ソケットディレクトリが/ runの一時ディレクトリであることに関連しています。基本的に、init.dスクリプトは、開始アクション中に存在しない場合、/ run / postgresqlにソケットdirを作成することになっています。これは常に再起動後の状態になります。

ただし、問題は、ソケットdirが存在しない場合、開始アクションを実行する前にinit.dスクリプトが終了することです。これは、pg_lsclustersの呼び出しがソケットディレクトリなしで失敗し、その結果、開始アクションがソケットディレクトリを作成できなくなるためです。

最善の解決策はわかりませんが、ソケットディレクトリを作成するロジックを開始アクションからpg_lsclustersの呼び出し前に再配置すると、再起動後に問題なくサーバーを起動できます。

ソケットディレクトリの作成を処理する開始アクションの一部を次に示します。

# create socket directory
if [ -d /var/run/postgresql ]; then
  chmod 2775 /var/run/postgresql
else
  install -d -m 2775 -o postgres -g postgres /var/run/postgresql
  [ -x /sbin/restorecon ] && restorecon -R /var/run/postgresql || true
fi

これが明らかに予想される動作にならないため、これの根本原因が明らかになった場合、更新を投稿します。

補遺:

私がこの問題に遭遇した理由はunix_socket_directoriesに適切な値が設定されていなかったからだと思います。9.2では、この設定オプションはunix_socket_directoryでしたが、unix_socket_directoriesに切り替えるのではなく、削除しました。unix_socket_directoriesの値を設定したので、サーバーの起動に関する問題は発生していません。


ありがとうございます!私はこれを解決していませんが、私のマシンにいくつかの悪いインストールがあると思います。ubuntuの新規インストールでPostgreSQL Aptリポジトリからインストールすると、問題が解決しました...
DPSSpatial 14年

3
@mapBaker-応答を更新して、特定の状況でのPG 9.3起動時の問題の根本原因を含めました。おそらくあなたにとっても役立つでしょう。
tdg5 14

1
再起動後にPG9.3が起動しませんでした。「unix_socket_directories = '/ var / run / postgresql'」という行を9.3のpostgresql.confに追加すると解決しました。おかげで
alfonx

ありがとう!このナゲットを見つけて喜んで、しばらくこれに取り組んでいます!
セルバンTanasa

3

ソケットファイルにいくつかの問題があります。/var/run/postgresql/.s.PGSQL.5432

/ var / run / postgresqlディレクトリが存在し、postgresqlを起動する前に書き込み可能であることを確認してください。詳細については、この説明を参照してください。

また、接続時に-hフラグを使用します。

psql -h localhost 

それが解決するかどうかを確認します。


1

これは、Ubuntuの問題を解決するようです:

postgresql.confを編集します。

unix_socket_directories='/var/run/postgresql

今やる service postgresql start


1

私はPSQLの初心者ですが、start.confを編集することで問題を解決しました。サーバーを手動で管理するための「自動」設定をコメントしましたが、値はauto、manual、またはdisabledです。

EGD。


1

私の側では、起動スクリプトが正しくありません。設定ファイルは/etc/postgresql/9.3/mainにインストールされますが、スクリプト/usr/share/postgresql-common/init.d-functions

for c in /etc/postgresql/"$2"/*; do 

この行を

for c in /etc/postgresql/"$2"/main; do

-2

すべて、

掘り下げた後、私はここで解決策を見つけました:

http://ubuntuforums.org/showthread.php?t=869080

これらの指示が含まれていました:

ターミナルで実行:

sudo mkdir -p /usr/local/pgsql/data
sudo chown -R postgres:postgres /usr/local/pgsql/
sudo su - postgres
cd /usr/lib/postgresql/9.3/bin/
./initdb -D /usr/local/pgsql/data
./postgres -D /usr/local/pgsql/data

これでサーバーが稼働しました!!!

編集:再起動後、サーバーはまだ実行されていません...

なぜこれを実行する必要があるのか​​についての考えは大歓迎です!


9.3が実行されていますか?バージョン番号は疑わしいようです
...-dezso

...これはV9.3ですべてです...私はこれらのコマンドに貼り付けたときに、バージョン番号を変更するのを忘れて申し訳ありません@dezso
DPSSpatial

ポートを指定する必要がある場合があります。デフォルトのポートは、postgresの古いインストールで使用されています。あなたの新規インストールは、ほとんどの場合、ポート5433を使用しているが、これはあなたがPostgreSQLの設定ファイルを読み込むことで確実に確認することができるものです:/etc/postgresql/9.3/main/postgresql.conf
user35581

1
これは回避策かもしれませんが、明らかに良い解決策ではありません。このようなものは、問題dba.stackexchange.com/a/91511/8099を
ソリン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.