Postgres n'a pas pu se connecter au serveur

417

Après avoir fait la mise à jour et la mise à niveau de la bière, mes postgres ont eu un problème. J'ai essayé de désinstaller postgres et de réinstaller, mais cela n'a pas fonctionné aussi bien.

Ceci est le message d'erreur. (J'ai également reçu ce message d'erreur lorsque j'essaie de faire râteau db: migrer)

$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Comment puis-je le résoudre?

Version Mac: Mountain lion.

version homebrew: 0.9.3

version postgres: psql (PostgreSQL) 9.2.1

Et c'est ce que j'ai fait.

12:30 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.2.1...
12:31 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.1.4...
12:31 ~/D/works$ psql --version
bash: /usr/local/bin/psql: No such file or directory
12:33 ~/D/works$ brew install postgresql
==> Downloading http://ftp.postgresql.org/pub/source/v9.2.1/postgresql-9.2.1.tar.bz2
Already downloaded: /Library/Caches/Homebrew/postgresql-9.2.1.tar.bz2
......
......
==> Summary
/usr/local/Cellar/postgresql/9.2.1: 2814 files, 38M, built in 2.7 minutes
12:37 ~/D/works$ initdb /usr/local/var/postgres -E utf8
The files belonging to this database system will be owned by user "laigary".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".

initdb: directory "/usr/local/var/postgres" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/usr/local/var/postgres" or run initdb
with an argument other than "/usr/local/var/postgres".
12:39 ~/D/works$ mkdir -p ~/Library/LaunchAgents
12:39 ~/D/works$   cp /usr/local/Cellar/postgresql/9.2.1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
12:39 ~/D/works$   launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
homebrew.mxcl.postgresql: Already loaded
12:39 ~/D/works$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
12:39 ~/D/works$ env ARCHFLAGS="-arch x86_64" gem install pg
Building native extensions.  This could take a while...
Successfully installed pg-0.14.1
1 gem installed
12:42 ~/D/works$ psql --version
psql (PostgreSQL) 9.2.1
12:42 ~/D/works$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Maintenant, après avoir réinstallé howbrew, lorsque j'utilise $ psql, il n'affiche aucun message d'erreur.

Mais je cours rake db:migratedans mon application rails, ça montre:

could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `connect'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:309:in `new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:319:in `checkout_new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:241:in `block (2 levels) in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `loop'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `block in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:233:in `checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:96:in `block in connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:404:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:170:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:144:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:107:in `rescue in create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:51:in `create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (3 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (2 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:63:in `run'
/usr/local/bin/rake:32:in `<main>'
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"riy_development", "pool"=>5, "username"=>nil, "password"=>nil}

Enfin je trouve la solution.

$ sudo mkdir /var/pgsql_socket/
$ sudo ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

Cette solution est peu délicate, mais elle fonctionne. J'espère que tout le monde a une meilleure solution

Mise à jour

Cela fonctionne aussi pour moi.

rm /usr/local/var/postgres/postmaster.pid
Gary Lai
la source
3
J'ai exactement le même problème, mais votre solution n'a pas fonctionné pour moi. Je pense que c'est un problème de permissions mais je n'ai pas la connaissance des permissions de fichiers pour le corriger.
ajbraus
Pour ceux qui installent PG via Homebrew et ont des problèmes, j'ai trouvé une autre réponse. Désinstallez simplement pg gem et réinstallez-le avec les configurations Homebrew. Voir la réponse sur stackoverflow.com/a/19609228/1072058 .
zquintana
réponse similaire ici - stackoverflow.com/questions/13573204/…
VelLes
1
Lancez postgres.
atw
4
Mettez à niveau votre version existante vers la version plus récente avec la commande suivante brew postgresql-upgrade-database

Réponses:

800

Eu un problème similaire; un fichier pid bloquait le démarrage de postgres. Réparer:

rm /usr/local/var/postgres/postmaster.pid

et puis tout va bien.

jonathanpberger
la source
4
Cela a fonctionné pour moi sur OSX Mavericks après avoir vu ce problème lors d'une mise à jour / redémarrage.
eprothro
3
@jstafford merci, j'ai déjà résolu! :) La solution était de désinstaller via homebew puis de redémarrer mon ordinateur tout de suite, donc je pourrais réinstaller postgres. L'ancienne version fonctionnait en arrière-plan, créant des fichiers et des conflits à chaque fois que j'essayais de réinstaller postgres.
betoharres
199
Cela n'a pas fonctionné pour moi sur Mavericks:rm: /usr/local/var/postgres/postmaster.pid: No such file or directory
sscirrus
16
Cela a fonctionné pour moi, après avoir effacé j'ai dû commencer les postgres. # pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start
Ricardo Castañeda
12
Je recommande de réduire le journal du serveur pour vous assurer qu'il s'agit bien du problème:tail /usr/local/var/postgres/server.log
Josh Bodah
255

Cela peut parfois être un problème avec une mise à niveau postgres.

Dans mon cas, cela s'est produit lors de la mise à niveau de 9.3 vers 9.4.

Voir http://www.postgresql.org/docs/9.4/static/upgrading.html

OS X / Homebrew:

Essayez postgres -D /usr/local/var/postgresde lancer - cela vous donnera une sortie beaucoup plus détaillée si postgres ne démarre pas.

Dans mon cas, l'exécution a rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8supprimé mes anciennes bases de données, puis a réinitialisé le schéma db postgres.

Merci à https://github.com/Homebrew/homebrew/issues/35240 pour cette solution.

Après avoir régénéré mes bases de données (avec rake db:create) tout a bien fonctionné à nouveau.

FreePender
la source
1
Cela a fonctionné pour moi avec un post-gres homebrew installé sur Yosemite.
cpursley
7
Si l'exécution postgres -D /usr/local/var/postgresvous indique que le répertoire de données a été initialisé avec une version antérieure et incompatible de Postgres, et que vous ne voulez pas perdre vos données locales, vous pouvez essayer ce fil
Nathan Long
Après l'exécution de la commande ci-dessus, j'ai exécuté: pg_ctl -D /usr/local/var/postgres -l logfile startpuis mon serveur a démarré en arrière
Tommyixi
5
Utilisez brew services start postgressur OSX pour démarrer les postgres en arrière-plan au lieu depostgres -D /usr/local/var/postgres
Mike Andrianov
1
@coffekid J'ai eu le même problème et l'ai résolu avec les instructions ici: stackoverflow.com/questions/24379373/…
Micah Walter
69

Trouvé une solution qui a fonctionné pour moi ici:

/dba/75214/psql-could-not-connect-to-server-no-such-file-or-directory

Vous exécutez essentiellement la commande suivante pour démarrer manuellement le serveur:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Mosab Sasi
la source
8
De toutes les réponses, c'est la seule qui a fonctionné pour moi. Utilisation d'El Capitan
Patrick_870206
J'ai essayé avec ce cmd mais ne fonctionne pas pour moi !!
Harshit Trivedi
41

Si l'installation et la désinstallation de postgres avec brew ne fonctionne pas pour vous, consultez les journaux de votre installation de postgresql ou:

postgres -D /usr/local/var/postgres

si vous voyez ce type de sortie:

LOG:  skipping missing configuration file "/usr/local/var/postgres/postgresql.auto.conf"
FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.4, which is not compatible with this version 9.6.1.

Essayez ensuite ce qui suit:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

Démarrez ensuite le serveur:

pg_ctl -D /usr/local/var/postgres -l logfile start

La source

svelandiag
la source
2
Cela fonctionne lorsque la raison est différente de la réponse acceptée, c'est-à-dire que les fichiers de base de données ne sont pas compatibles avec la version actuelle. Puisque c'est exactement mon problème, j'ai voté.
Falk Schuetzenmeister
1
cette commande fonctionne pour moi.
Ccr
travaille pour Mojave 10.14.6
Sgryt87
34

Sur Yosemite, si le fichier pid empêche Postgres de démarrer et que vous avez un launchctldémon essayant (et échouant) de charger les démons de base de données, alors vous devrez décharger le fichier plist:

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Ensuite, supprimez le fichier pid

$ rm /usr/local/var/postgres/postmaster.pid

Rechargez ensuite le launchctldémon

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Ryan Atallah
la source
28

Pour toute personne lisant ceci et utilisant Postgres.app, vous devrez peut-être host: localhostdans votre database.yml. http://postgresapp.com/documentation#toc_3

David Winiecki
la source
Cette opération modifie la connexion d'un socket à une connexion TCP, ce qui peut avoir des implications négatives. Voir stackoverflow.com/questions/6770649/…
Brett Bim
1
Hmm, en fait, si vous votez ... Peut-être ne dites pas pourquoi? meta.stackoverflow.com/questions/252297/… Ou peut-être dites pourquoi, mais déconnectez-vous d'abord afin que vous soyez anonyme.
David Winiecki
Je pense que le vote négatif est dû au fait que la question initiale n'était pas pour Postgres.app mais Homebrew. Ainsi, bien que la réponse puisse être utile quelque part, elle ne répond pas à la question.
Brian Dear
Le lien ne semble aller nulle part (et la recherche de "localhost" dans le passé n'a aucun résultat) mais cela a juste résolu le problème pour moi après une heure de recherche.
sixty4bit
25

La mise à niveau de la base de données fonctionne pour moi

brew postgresql-upgrade-database

Tomer G
la source
👍✅⭐️🙏Merci Tomer! Cela a fonctionné pour moi 6/2/20 mise à niveau de 9.4 à 12 sur macOS Mojave 10.14.6
Rob Bednark
19
brew services start postgres 

travaillé pour moi!

rld
la source
17

Vérifiez que le fichier socket existe.

$ ls -l /tmp/.s.PGSQL.5432
srwxrwxrwx  1 you  wheel  0 Nov 16 09:22 /tmp/.s.PGSQL.5432

Si ce n'est pas le cas, vérifiez dans votre postgresql.conf la modification d'unix_socket_directory.

$ grep unix_socket /usr/local/var/postgres/postgresql.conf
#unix_socket_directory = ''     # (change requires restart)
#unix_socket_group = ''         # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation
jrwren
la source
1
Ceci est ma réponse informatique. $ ls -l /tmp/.s.PGSQL.5432 ls: /tmp/.s.PGSQL.5432: No such file or directory $ grep unix_socket /usr/local/var/postgres/postgresql.conf #unix_socket_directory = '' # (change requires restart) #unix_socket_group = '' # (change requires restart) #unix_socket_permissions = 0777 # begin with 0 to use octal notation
Gary Lai
29
Enfin je trouve la solution. $ mkdir /var/pgsql_socket/ $ sudo mkdir /var/pgsql_socket/ $ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/Cette solution est peu délicate, mais elle fonctionne. J'espère que tout le monde a une meilleure solution
Gary Lai
beau travail @GaryLai. Très étrange que je n'ai pas eu à faire de même avec mon homebrew postgresql
jrwren
2
cela peut aider certaines personnes: github.com/mxcl/homebrew/issues/14527
AdamT
14

Le problème peut également être attribué à un processus en panne qui a laissé le fichier postmaster.pid derrière. Je fais cela et je travaille:

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql
rld
la source
10

La façon la plus infaillible de contourner cela est de faire

brew reinstall postgresql

Cela gardera votre autorisation d'utilisateur, etc. tout intact et tout sera réinitialisé à nouveau. Fonctionne tout le temps!

attaboyabhipro
la source
travaillé comme un champion !!!! Tout cela était nécessaire.
Akash K
Cela fonctionne mais je recommande que si rm /usr/local/var/postgres/postmaster.pidsur mac os ne fonctionne pas, utilisez cette commande.
Yaseen Ahmad Il y a
10

Le problème est dû au fait qu'il existe déjà un service en cours d'exécution sur le port 5432 et que nous ne pouvons pas établir de connexion de socket psql via ce port.

J'ai supprimé le fichier socket

rm -rf /tmp/.s.PGSQL.5432/

Ensuite, j'ai réinitialisé les services postgres

postgres -D /usr/local/var/postgres

Cela a fonctionné pour moi.

Abdullah Gürsu
la source
7

Changer les paramètres de configuration postresql ou database.yml, changer $ PATH ou créer des liens symboliques n'était pas nécessaire pour moi. Tout ce que je devais faire était gem uninstall pget puis bundle(ou gem install pg).

Le problème était que le pg gem avait été installé avant les postgres homebrew, tout comme les paramètres de la version de postgres fournie avec MacOS. La réinstallation (et donc la reconstruction de l'extension native) a résolu le problème.

John
la source
Je voulais juste dire merci. Je viens de mettre à niveau PostgresApp sur macOS et bien que je puisse me connecter en utilisant psql, je ne pouvais pas me connecter via des rails. désinstaller et réinstaller le gem pg était juste le ticket! :)
craig1410
7

Cela m'est arrivé lors de la mise à niveau de la version 9.3.4 vers la version 9.5, car les bases de données sont incompatibles sans mise à niveau.

J'ai utilisé pg_upgrade comme suit:

Arrêtez les postgres

$ brew services stop postgresql

Mettez à niveau les bases de données:

$ pg_upgrade \
   -d /usr/local/var/postgres \
   -D /usr/local/var/postgres9.5 \
   -b /usr/local/Cellar/postgresql/9.3.4/bin/ \
   -B /usr/local/Cellar/postgresql/9.5.0/bin/ \
   -v

Archivez les anciennes bases de données:

 $ mv /usr/local/var/postgres /usr/local/var/postgres9.3.save
 $ mv /usr/local/var/postgres9.5 /usr/local/var/postgres

Redémarrez les postgres:

 $ brew services start postgresql

Gems mis à jour (pour les rails / enregistrement actif):

 $ gem uninstall pg
 $ gem uninstall activerecord-postgresql-adapter
 $ bundle install
stujo
la source
Ces instructions se trouvent également sur collectiveidea.com/blog/archives/2016/01/08/… , et ont toujours fonctionné pour moi aujourd'hui lors de la mise à niveau de 9.4.0 vers 9.6.3. Je n'avais rien à faire manuellement sur le fichier .pid.
Jan Hettich
7

C'est en fait ce que vous êtes censé faire:

vous devriez plutôt regarder /usr/local/var/postgres/postmaster.pid

puis regardez la première ligne du fichier - c'est le mauvais PID

Courir

ps aux | grep <PID>

par exemple:

ps aux | grep 12345

alors fais

kill <PID>

par exemple

kill 12345

En supposant qu'il fonctionne toujours

/superuser/553045/fatal-lock-file-postmaster-pid-already-exists

n'écoutez pas la réponse acceptée elle est mauvaise et corrompra vos données !!!

user1596067
la source
Merci, cela a fonctionné pour moi. Supprimer le postmaster.pid dans la réponse acceptée n'était pas suffisant.
Abe Petrillo
4

Option psql

-h nom d'hôte --host = nom d'hôte

: Spécifie le nom d'hôte de la machine sur laquelle le serveur s'exécute. Si la valeur commence par une barre oblique, elle est utilisée comme répertoire pour le socket de domaine Unix.

$ grep "port\|unix_socket" /etc/postgresql/9.1/main/postgresql.conf
port = 5433                                         # (change requires restart)
unix_socket_directory = '/var/run/postgresql'       # (change requires resta

$ netstat -nalp | grep postgres
unix  2      [ ACC ]     STREAM     LISTENING     106753   4349/postgres       /tmp/.s.PGSQL.5432
unix  2      [ ACC ]     STREAM     LISTENING     10377 1031/postgres       /var/run/postgresql/.s.PGSQL.5433

Exécutez psql avec l'option -host

$ psql -p 5433 -h /var/run/postgresql

Pas besoin de faire un lien doux

Juno Choo
la source
4

Nous avons également rencontré ce problème sur MacOS Sierra et lorsque nous avons exécuté pg_ctl comme décrit ci-dessus, nous avons ensuite eu l'erreur suivante pg_ctl: no database directory specified and environment variable PGDATA unset. Nous avons donc suivi les étapes ici qui ont résolu notre problème, à savoir:

mkdir ~/.postgres

initdb ~/.postgres

pg_ctl -D ~/.postgres start

Austin
la source
4

Si postgres a été installé en utilisant homebrew, vous pouvez résoudre ce problème en exécutant:

brew link postgres
Cl Local
la source
4

Si vous arrêtez votre système sans quitter psql, postgres n'aurait pas supprimé certains fichiers.

Je n'ai pas trouvé le fichier postmaster.pid à l'emplacement usr / local / var / postgres

J'ai donc fait ce qui suit:

les services de brassage commencent postgresql

La commande ci-dessus devrait vous permettre de démarrer postgres

Ashwin
la source
3

J'ai rencontré ce problème après avoir essayé de restaurer / supprimer / créer une base de données alors que d'autres processus y accédaient. Le correctif MacOSX / Homebrew était:

  1. fermez tous les autres processus accédant rails server, rails console, guard, etc ...
  2. charger / décharger en utilisant les commandes trouvées dans brew info postgres
  3. exécuter la restauration / suppression / création d'avant
TomFuertes
la source
3

FWIW, cela m'est arrivé aujourd'hui, mais ce qui s'est passé, c'est que j'exécutais des mises à jour Ubuntu à l'époque, qui mettaient probablement à jour Postgres. Une fois la mise à jour terminée, j'ai pu me connecter sans accroc.

Par souci d'exhaustivité, j'essayais de récupérer des enregistrements de la base de données à partir d'une console Rails:

development (main):0 > a = MyModel.find 73694
PG::ConnectionBad: 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"?
Ruy Diaz
la source
3

Il semble que votre psql ne fonctionne pas. Vous devez l'exécuter avant de vous connecter. Vous ne pouvez le faire qu'en utilisant Postgres.app pour Mac OS uniquement. (Téléchargez et installez cette application http://postgresapp.com ) Ouvrez l'application et vous avez un serveur PostgreSQL prêt et en attente de nouvelles connexions. Fermez l'application et le serveur s'arrête. Vous pouvez également trouver ces informations ici http://www.postgresql.org/download/macosx/ . J'espère que cela vous aidera.

lisyk
la source
1
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien de référence. Les réponses de lien uniquement peuvent devenir invalides si la page liée change.
Kmeixner
La question faisait spécifiquement référence à une installation homebrew et non à une installation Postgres.app. Bien que cette réponse soit utile, elle ne répond pas à la question. Ce serait comme dire "Utilisez plutôt MySQL".
Brian Dear
3

C'est parce qu'un serveur précédent est toujours en cours d'exécution, essayez de tout fermer et de relancer votre application.

Kamara Jōb
la source
3

Pour ceux qui utilisent cette commande et ne fonctionnent pas ou le fichier n'est pas là et utilise Ruby on Rails

rm /usr/local/var/postgres/postmaster.pid

Ou toute autre commande et continue d'échouer.

J'ai résolu ce problème de désinstallation avec Brew. J'ai dû désinstaller avec brew 2 fois, car lors de la première désinstallation, il restera une autre version de postgresql, avec la deuxième désinstallation, le processus sera terminé.

Installer PostgreSQL avec Brew

Puis déposez, créez et migrez les bases de données du projet

(N'oubliez pas de démarrer le serveur postgresql)

Esteban Echeverry
la source
3

J'ai le même problème parce que j'utilise un mauvais nom d'utilisateur Postgres dans le code. Je me suis connecté à postgres psql -d postgreset j'entre \dupour prendre le nom du rôle et corriger le nom d'utilisateur de Postgres.

Donc, lorsque vous êtes confrontés à ce problème, vous devez vous assurer que vous utilisez le nom d'utilisateur, le mot de passe, le nom d'hôte et la base de données Postgres corrects ...

J'espère que cela aidera n'importe qui

Brilliant-DucN
la source
3

¿Avez-vous récemment changé le pg_hba.conf? si vous venez de vérifier toute faute de frappe:

"local" concerne uniquement les connexions socket de domaine Unix

local tout tout mot de passe

Connexions locales IPv4:

héberger tous tous les mots de passe 127.0.0.1/32

Connexions locales IPv6:

hébergez tous tous :: 1/128 mot de passe

Parfois, une simple erreur peut nous donner mal à la tête. J'espère que cette aide et désolé si mon anglais n'est pas bon du tout.

Sergio Zapata
la source
3

Cela se produit lorsque le serveur postgres n'est pas en cours d'exécution. Étapes pour installer correctement Postgres via Homebrew sur MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Cela initialise postgres pour utiliser le répertoire donné comme répertoire de base de données. Normalement, il n'est pas conseillé d'utiliser le répertoire utilisateur pour le stockage de la base de données. Modifier le fichier sudoers pour ajouter initdb et des commandes similaires, puis exécuter initdb sur / usr / local / var / postgres]

  3. pg_ctl -D /Users/<username>/db -l logfile start [Après avoir réussi l'étape 2, il vous demandera d'exécuter l'étape 3. Cette commande démarre manuellement le serveur.]

Souvik Das
la source
2

J'ai cette même erreur. Il s'avère que les postgres ne fonctionnaient tout simplement pas (il est généralement toujours exécuté en arrière-plan, mais pour une raison quelconque, ce n'était pas le cas aujourd'hui).

Si tel est le cas, tapez simplement postgresla ligne de commande de votre répertoire de projet

Benjamin Dunphy
la source
2

Après une énorme quantité de va-et-vient, c'est vraiment la pgversion gem que j'utilisais. Sur mavericks, la pgversion 0.15.1ne se connecterait pas au port 5432 mais la version 0.17.1fonctionne très bien - très étrange.

Anthony
la source