rake db:migrate
またはRails s
コマンドを実行すると、同じエラーが表示されます。
Error : 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"?
Rails s
を試すと、ブラウザにエラーが表示されます。
これは私のdatabase.ymlです
default: &default
adapter: postgresql
encoding: unicode
pool: 5
development:
<<: *default
database: books_development
test:
<<: *default
database: books_test
production:
<<: *default
database: books_production
username: abd
password: <%= ENV['BOOKS_DATABASE_PASSWORD'] %>
注:データベースbooks_development
があります。 books_test
; Sudo /etc/init.d/postgresql start
を試すと、postresqlは問題なく実行されています
私は実行しました:
create database books_development;
create database books_test;
psqlコンソールで。そして、それは成功したと言った
私は多くの解決策を試しましたが、昨日解決策を探して過ごしましたが、関連する質問の解決策は私のエラーを解決しませんでした。
Postgresql-9.4(最新)とxubuntu 14.04があります
何か案は?
DebianまたはUbuntuなどのDebian派生製品用にパッケージ化されたPostgreSQLの規則は、Unixドメインソケットのディレクトリとして/var/run/postgresql
を使用することです。一方、自己コンパイルされたpostgresクライアントライブラリの規則は、他の方法で自己設定されない限り、/tmp
を使用することです。
したがって、この両方の不一致の通常の根本的な原因は、自己コンパイルされたクライアント側のものと事前にコンパイルされたサーバー側パッケージが混在していることです(クライアントとサーバーが同じマシンにインストールされていても、クライアント側とサーバー側はまだ明確で、同期していない可能性があります)。
/tmp
からこのディレクトリへのソフトリンクは、一般的に/tmp
が再起動時に空になるため、再起動のたびにリンクが失われることを除いて、askerが示唆するように機能します。
より良いオプションは、database.yml
のエントリとして追加することです。
実際のソケットパスがHost: /tmp
の場合は/tmp
(自己コンパイルサーバー、パッケージ化されたクライアント)
またはHost: /var/run/postgresql
は、実際のソケットパス/var/run/postgresql/
(パッケージサーバー、自己コンパイルクライアント)の場合。
Hostフィールドの値がスラッシュ文字で始まる場合、postgresライブラリは、それがホスト名ではなくローカルソケットのディレクトリの場所であることを認識します。ディレクトリ.s.PGSQL.portnumber
内のファイル名が生成されます。指定しないでください。ディレクトリのみです。
もう1つの可能性は、自己コンパイルされたソフトウェアパッケージをDebianにできるだけ近づけて設定し、デフォルトを上書きすることです。
Ubuntu 14.04でpostgresユーザーにpsql
を入力すると、同じIs the server running locally and accepting connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”?
エラーが発生しました。既存の実用的なソリューションが見つかりませんでした。
私の短い答えは、私のインストールはvar/pgsql_socket
ディレクトリを作成しましたが、設定ファイルはそれを知りませんでした。
1)postgres.conf
ファイルを見つけます(私にとってはetc/postgresql/9.6/main
にありました)
2)listen_addresses = '*'
に変更
3)別のUNIXソケットディレクトリを追加しますunix_socket_directories = '/var/run/postgresql, /var/pgsql_socket' # comma-separated list of directories
4)この時点で、sudoサービスのpostgresql startは開始しようとしましたが、ロックファイルを作成する権限がありませんでした。* The PostgreSQL server failed to start. Please check the log output: 2016-10-05 17:14:55 CEST [28472-1] FATAL: could not create lock file "/var/pgsql_socket/.s.PGSQL.5432.lock": Permission denied 2016-10-05 17:14:55 CEST [28472-2] LOG: database system is shut down
5)権限の変更( Mark Berryのコメントはこちら から見つかりました)$ Sudo chown root.postgres /var/pgsql_socket
$ Sudo chmod g+wx /var/pgsql_socket
6)Sudo service postgresql start
Sudo -i -u postgres
psql
それは最終的に私のために働いた
解決しました。私はちょうどを使用してソフトリンクを作成しました:
Sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
そして、編集した
/etc/postgresql/9.4/main/pg_hba.conf
(別のバージョンのpostgresqlがある場合、パスの9.4を変更する必要があります)
から:
local all postgres peer
に:
local all postgres md5
古いロックファイル/var/run/postgresql/.s.PGSQL.5432.lock
によって、まったく同じ症状が発生する可能性があります。この症状の1つは、psql
レポートです
psql:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありませんサーバーはローカルで実行され、Unixドメインソケット "/var/run/postgresql/.s.PGSQL.5432"で接続を受け入れていますか?
netstat -lp --protocol=unix | grep postgres
によって報告されるように、このパスを使用できるソケットが明らかにあるにもかかわらず
この問題は、ロックファイルを削除してpostgresqlを再起動することで解決できます。これは、パージして再インストールするよりも明らかに侵襲的ではありません。
Sudo rm /var/run/postgresql/.s.PGSQL.5432.lock
Sudo service postgresql restart
解決策:
これを試して
export LC_ALL="en_US.UTF-8"
この。 (9.は私の現在のPostgreSQLバージョンです。バージョンを書いてください!)
Sudo pg_createcluster 9.3 main --start
このエラーが発生した場合、postgresサーバーは別のポート(5433)で実際にリッスンしていました。これを解決するには、database.ymlにRails=を使用するように指示する行を追加します。
port: 5433
pg_lsclusters
を実行すると、デバイスで実行されているすべてのpostgresクラスターが一覧表示されます。例:
Ver Cluster Port Status Owner Data directory Log file
9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
ステータスがダウンランの場合
#format is pg_ctlcluster <version> <cluster> <action>
Sudo pg_ctlcluster 9.6 main start
このプロセスが成功しなかった場合、エラーがスローされます。私のエラーは(/var/log/postgresql/postgresql-9.6-main.log
でエラーログを見ることができます)
FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
Try adding `postgres` user to the group `ssl-cert`
postgres
が/var/lib/postgresql/version_no/main
の所有者であることを確認してください。例:Sudo chown postgres -R /var/lib/postgresql/9.6/main/
それは私に偶然起こり、「ssl-cert」グループから誤ってPostgresユーザーを削除したことが判明しました。以下のコードを実行して、ユーザーグループの問題と権限を修正します
#set user to group back with
Sudo gpasswd -a postgres ssl-cert
# Fixed ownership and mode
Sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key
Sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key
# now postgresql starts! (and install command doesn't fail anymore)
Sudo service postgres restart
つまり、Postgresサーバーが実行されていません。
チェックPostgresターミナルからのサービスステータス
Sudo service postgresql status
有効にするPostgresサービス、開始されていない場合
Sudo service postgresql start
[〜#〜] or [〜#〜]
Sudo service postgresql restart
Postgresサービスが正常に開始された場合、コマンドは機能するはずです。