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?
  
  mise à 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
  
  Maj 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
  
                6 réponses
la façon la plus simple de vérifier les processus en cours d'exécution:
ps auxwww | grep postgres
  
  et cherchez une commande qui ressemble à quelque chose comme ceci (votre version ne peut 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 aussi 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 faire prendre effet, n'oubliez pas de le source comme ceci:
$ . ~/.bashrc
  
  maintenant, essayez 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 dans ses postgres.
si vous installez en utilisant HomeBrew, l'init doit être exécuté avant que quoi que ce soit d'autre ne 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 base de données en utilisant:
postgres -D /usr/local/var/postgres or pg_ctl -D /usr/local/var/postgres -l logfile start
si vous rencontrez encore des problèmes, vérifiez votre pare-feu. Si vous utilisez un bon comme HandsOff! et il a été configuré pour bloquer le trafic, alors votre page ne verra pas la base de données.
cela dépend de l'endroit où votre serveur postgresql est installé. Vous utilisez le pg_ctl démarrer manuellement le serveur comme ci-dessous.
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
  
    	                 à 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 docs :
pg_isready renvoie 0 à l'interpréteur de commandes si le serveur accepte les connexions normalement, 1 si le serveur rejette les connexions (par exemple au 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é faite (par exemple due pour les paramètres non valides).
  la commande  pg_ctl status  suggérée dans d'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 psql pour exécuter une simple requête et vérifier le code de sortie, par exemple psql -c 'SELECT 1' , ou utiliser pg_isready   pour vérifier le statut de connexion  .