Comment vérifier l’état du serveur PostgreSQL Mac OS X

Comment savoir si mon serveur Postgresql fonctionne ou non?

Je reçois ce message:

[~/dev/working/sw] sudo bundle exec rake db:migrate rake aborted! could not connect to server: Connection refused Is the server running on host "localhost" and accepting TCP/IP connections on port 5432? 

Mettre à jour:

 > which postgres /usr/local/bin/postgres > pg_ctl -D /usr/local/bin/postgres -l /usr/local/bin/postgres/server.log start pg_ctl: could not open PID file "/usr/local/bin/postgres/postmaster.pid": Not a directory 

Mise à jour 2:

 >pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start server starting sh: /usr/local/var/postgres/server.log: No such file or directory 

Le moyen le plus simple de vérifier les processus en cours d’exécution:

 ps auxwww | grep postgres 

Et recherchez une commande qui ressemble à ceci (votre version peut ne pas être 8.3):

 /Library/PostgreSQL/8.3/bin/postgres -D /Library/PostgreSQL/8.3/data 

Pour démarrer le serveur, exécutez quelque chose comme ceci:

 /Library/PostgreSQL/8.3/bin/pg_ctl start -D /Library/PostgreSQL/8.3/data -l postgres.log 

Vous pouvez exécuter la commande suivante pour déterminer si postgress est en cours d’exécution:

 $ pg_ctl status 

Vous voudrez également définir la variable d’environnement PGDATA .

Voici ce que j’ai dans mon fichier ~/.bashrc pour postgres:

 export PGDATA='/usr/local/var/postgres' export PGHOST=localhost alias start-pg='pg_ctl -l $PGDATA/server.log start' alias stop-pg='pg_ctl stop -m fast' alias show-pg-status='pg_ctl status' alias restart-pg='pg_ctl reload' 

Pour les amener à prendre effet, rappelez-vous de le source comme suit:

 $ . ~/.bashrc 

Maintenant, essayez-le et vous devriez obtenir quelque chose comme ceci:

 $ show-pg-status pg_ctl: server is running (PID: 11030) /usr/local/Cellar/postgresql/9.2.4/bin/postgres 

Vous n’avez probablement pas initié postgres.

Si vous avez installé HomeBrew, l’initialisation doit être exécutée avant que tout le rest devienne utilisable.

Pour voir les instructions, lancez brew info postgres

 # Create/Upgrade a Database If this is your first install, create a database with: initdb /usr/local/var/postgres -E utf8 To have launchd start postgresql at login: ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents Then to load postgresql now: launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist Or, if you don't want/need launchctl, you can just run: pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 

Une fois que vous avez exécuté cela, il devrait dire quelque chose comme:

Succès. Vous pouvez maintenant démarrer le serveur de firebase database en utilisant:

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

Si vous rencontrez toujours des problèmes, vérifiez votre pare-feu. Si vous en utilisez un bon comme HandsOff! et il a été configuré pour bloquer le trafic, alors votre page ne verra pas la firebase database.

Cela dépend de l’endroit où votre serveur postgresql est installé. Vous utilisez le pg_ctl pour démarrer manuellement le serveur comme ci-dessous.

 pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 

A partir de PostgreSQL 9.3, vous pouvez utiliser la commande pg_isready pour déterminer l’état de connexion d’un serveur PostgreSQL.

De la documentation :

pg_isready renvoie 0 au shell si le serveur accepte les connexions normalement, 1 si le serveur rejette les connexions (par exemple lors du démarrage), 2 s’il n’y a pas eu de réponse à la tentative de connexion et 3 si aucune tentative n’a été effectuée (par exemple aux parameters non valides).

La commande de pg_ctl status suggérée dans les autres réponses vérifie que le processus postmaster existe et, le cas échéant, signale qu’il est en cours d’exécution. Cela ne signifie pas nécessairement qu’il est prêt à accepter des connexions ou à exécuter des requêtes.

Il est préférable d’utiliser une autre méthode comme l’utilisation de psql pour exécuter une requête simple et vérifier le code de sortie, par exemple psql -c 'SELECT 1' , ou utiliser pg_isready pour vérifier l’état de la connexion .