erreur avec la base de données postgresql: le serveur est-il exécuté localement et accepte-t-il les connexions sur le socket de domaine Unix "/var/run/postgresql/.s.PGSQL.5432"?
Quand je lance le rake db:migrate
ou d'exécuter le rails s
commande, j'obtiens le même message d'erreur:
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"?
Je reçois le message d'erreur dans le navigateur lorsque j'essaie rails s
.
C'est ma base de données.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'] %>
Note : j'ai les bases de données books_development
; books_test
; et la postresql sont en cours d'exécution sans problème lorsque j'essaie
sudo /etc/init.d/postgresql start
Je n'ai couru:
create database books_development;
create database books_test;
dans le psql console. Et il dit que c'est fait avec succès
J'ai essayé beaucoup de solutions et j'ai passé la journée d'hier à la recherche d'une solution et pas de solution dans les questions liées à résolu mon erreur.
J'ai postgresql-9.4 (la dernière) et xubuntu 14.04
Des Idées?
source d'informationauteur adyouri
Vous devez vous connecter pour publier un commentaire.
La convention pour PostgreSQL empaqueté pour Debian ou dérivés de Debian comme Ubuntu est d'utiliser
/var/run/postgresql
que le répertoire pour les sockets de domaine Unix. D'autre part, la convention pour l'auto-compilé postgres client libs est d'utiliser/tmp
à moins que l'auto-configuré autrement.Donc l'habituel cause de ce décalage entre les deux est un mélange d'auto-compilé côté client des trucs avec des pré-compilé côté serveur paquets (même si le client et le serveur sont installés sur la même machine, côté client et côté serveur sont encore distinctes et peuvent être hors de la synchronisation).
Doux liens de
/tmp
à ce répertoire comme suggéré par le demandeur fonctionne sauf que le lien va être perdu à chaque reboot, parce qu'en général/tmp
est vidé à chaque redémarrage.Une meilleure option serait d'ajouter une entrée dans
database.yml
:soit
host: /tmp
si le réel socket chemin est/tmp
(auto-serveur compilé, emballé client)ou
host: /var/run/postgresql
si le réel socket chemin/var/run/postgresql/
(emballé serveur, auto-compilé client).Lorsque la valeur dans le champ hôte commence par une barre oblique, la postgres bibliothèque sait que c'est l'emplacement d'un répertoire local sockets plutôt que d'un nom d'hôte. Le nom de fichier à l'intérieur du répertoire
.s.PGSQL.portnumber
est généré et ne doit pas être spécifié, seul le répertoire.Une autre possibilité consiste à configurer l'auto-compilé des packages de logiciels d'aussi près que possible de Debian, en remplaçant les valeurs par défaut comme ils le font.
J'ai eu le même
Is the server running locally and accepting connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”?
erreur lors de la saisiepsql
à l'utilisateur postgres dans Ubuntu 14.04. Je ne pouvais pas trouver de solution de travail.La réponse a été pour moi: mon installation fait une
var/pgsql_socket
répertoire, mais pas les fichiers de configuration savait.1) Trouver le
postgres.conf
fichier (c'était enetc/postgresql/9.6/main
pour moi)2) changement de
listen_addresses = '*'
3) ajouter une autre socket unix directory
unix_socket_directories = '/var/run/postgresql, /var/pgsql_socket' # comma-separated list of directories
4) a ce stade, sudo service postgresql start a tenté de démarrer, mais n'a pas le pouvoir de créer le fichier de verrouillage.
* 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) Modifier les autorisations ( trouvé de Marque Berry commentaire ici )
$ sudo chown root.postgres /var/pgsql_socket
$ sudo chmod g+wx /var/pgsql_socket
6)
sudo service postgresql start
sudo -i -u postgres
psql
Qui a finalement fonctionné pour moi
Je l'ai résolu . Je Viens de créer un softlink en utilisant :
sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
puis modifier le
/etc/postgresql/9.4/main/pg_hba.conf
( Si vous avez une autre version de postgresql, vous devez changer 9.4 dans le chemin d'accès)
À partir de:
local all postgres peer
:
local all postgres md5
Exactement le même symptôme peut être causée par un état de verrouillage de fichier
/var/run/postgresql/.s.PGSQL.5432.lock
. L'un des symptômes de ce estpsql
rapportsmême si il y a clairement une prise avec ce chemin disponible tel que rapporté par
netstat -lp --protocol=unix | grep postgres
Le problème peut être résolu en supprimant le fichier de verrouillage et de redémarrer postgresql. C'est certainement moins invasive que la purge et ré-installer.
Solution:
Essayer cette
et ce. (9.3 est ma version de PostgreSQL. Écrivez votre version!)
Lorsque je rencontre cette erreur, mon serveur postgres a été acutally écoute sur un autre port (5433).
Pour résoudre ce problème, ajoutez une ligne dans votre base de données.yml pour instruire les rails d'utiliser le même:
De course
pg_lsclusters
la liste de toutes les postgres clusters en cours d'exécution sur votre appareilpar exemple:
si le statut est en descente
Si ce processus n'est pas réussi, il va jeter l'erreur.
Mon erreur a été(Vous pouvez voir le journal des erreurs sur
/var/log/postgresql/postgresql-9.6-main.log
)assurez-vous que
postgres
est le propriétaire de/var/lib/postgresql/version_no/main
par exemple:
sudo chown postgres -R /var/lib/postgresql/9.6/main/
Il m'est arrivé et il s'est avéré que j'ai supprimé par erreur l'utilisateur Postgres "ssl-cert" du groupe. Exécuter le code ci-dessous pour corriger le groupe d'utilisateurs émettre et de fixer les autorisations
Vérifier Postgres de l'état de Service de Terminal
Permettre Postgres Service, Si pas commencé
OU
Maintenant, votre commande devrait fonctionner, Si Postgres Service est démarré avec succès.