Comment puis-je 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
macos
postgresql
Ramy
la source
la source
Réponses:
Le moyen le plus simple de vérifier les processus en cours:
Et recherchez une commande qui ressemble à ceci (votre version n'est peut-être pas la 8.3):
Pour démarrer le serveur, exécutez quelque chose comme ceci:
la source
pgrep postgres
fonctionne également. Oups auxwww | grep [p]ostgres
pour empêcher legrep
de se faire ramasser.ps | grep
suggestion de faute professionnelle.pgrep
est acceptable, à peine.pg_ctl status
c'est génial .ps auxwww | grep postgres
va correspondregrep postgres
, etless /var/log/postgres/whatever
./Library/PostgreSQL/8.3/data
est créé arbitrairement par l'utilisateur via lainitdb
commande. voici le document 8.3Vous pouvez exécuter la commande suivante pour déterminer si postgress est en cours d'exécution:
Vous voudrez également définir le
PGDATA
variable d'environnement.Voici ce que j'ai dans mon
~/.bashrc
dossier pour les postgres:Pour qu'ils prennent effet, n'oubliez pas de le rechercher comme suit:
Maintenant, essayez-le et vous devriez obtenir quelque chose comme ceci:
la source
Vous n'avez probablement pas initié postgres.
Si vous avez installé HomeBrew, l'initialisation doit être exécutée avant que quoi que ce soit d'autre devienne utilisable.
Pour voir les instructions, exécutez
brew info postgres
Une fois que vous avez exécuté cela, il devrait dire quelque chose comme:
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, votre page ne verra pas la base de données.
la source
Depuis PostgreSQL 9.3, vous pouvez utiliser la commande
pg_isready
pour déterminer l'état de connexion d'un serveur PostgreSQL.À partir de la documentation :
la source
Cela dépend de l'endroit où votre serveur postgresql est installé. Vous utilisez pg_ctl pour démarrer manuellement le serveur comme ci-dessous.
la source
La
pg_ctl status
commande suggérée dans d'autres réponses vérifie que le processus postmaster existe et, si tel est le cas, 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 utiliser
psql
pour exécuter une requête simple et vérifier le code de sortie, par exemplepsql -c 'SELECT 1'
, ou utiliserpg_isready
pour vérifier l'état de la connexion .la source
psql -c "SELECT 1" -d {dbname} > /dev/null || postgres -D /usr/local/var/postgres >postgres.log 2>&1 &
si vous voulez vérifier et démarrer postgres en une seule fois (pratique pour les scripts d'automatisation).