Avoir un problème avec PostgreSQL sur Mac OS X 10.8.4. J'ai accidentellement fait brew rm postgresql --force
pendant le fonctionnement du serveur postgres. Quand j'ai installé en utilisant brew install postgresql
et a couru pg_ctl -D /usr/local/var/postgres start
Je reçois:
pg_ctl: another server might be running; trying to start server anyway
server starting
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 752) running in data directory "/usr/local/var/postgres"?
quand je lance "ps -ef | grep postgres", je reçois:
501 752 235 0 12:42PM ?? 0:00.01 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
501 754 752 0 12:42PM ?? 0:00.00 postgres: checkpointer process
501 755 752 0 12:42PM ?? 0:00.34 postgres: writer process
501 756 752 0 12:42PM ?? 0:00.02 postgres: wal writer process
501 757 752 0 12:42PM ?? 0:00.01 postgres: autovacuum launcher process
501 758 752 0 12:42PM ?? 0:00.01 postgres: stats collector process
501 945 452 0 12:58PM ttys000 0:00.00 grep postgres
quand j'essaie d'arrêter le serveur avec pg_ctl stop -D /usr/local/var/postgres -m fast
ou pg_ctl -D /usr/local/var/postgres stop -mi
Je reçois:
waiting for server to shut down........................................... Failed
pg_ctl: server does not shut down
[~ # ~] éditer [~ # ~]
which pg_ctl
/usr/local/bin/pg_ctl
pg_ctl --version
pg_ctl (PostgreSQL) 9.2.4
Gist of server.log
: https://Gist.github.com/anonymous/6106182
s’avère que mon brew.plist pour postgres devait être déchargé et supprimé à ~/Library/LaunchAgents /. Après un redémarrage, tout va bien ... dernière question.
Avait le même problème, pg_ctl: server does not shut down
. En outre, ps auxwww | grep postgres
n'a montré aucun postgres en cours d'exécution, tandis que pg_ctl -D /usr/local/var/postgres status
a montré que postgres est en cours d'exécution. Redémarrer mon Mac n'a pas aidé, je suis même allé jusqu'à réinitialiser SMC, mais cela SO Q/A m'a donné une idée de ce qu'il faut rechercher: les problèmes de brassage.
En suivant cette ligne de pensée, j'ai trouvé ceci utile article de blog , qui se résumait à suivre les commandes qui ont résolu ce problème pour moi:
$ brew services list
$ brew services restart postgresql
J'espère que cela aidera quelqu'un.
Mise à jour - Commande inconnue: services
Après un peu d'enquête suite à l'un des commentaires ('Commande inconnue: services'), j'ai découvert que les auteurs de Homebrew avaient décidé de retirer services
du référentiel, vu que personne ne voulait conserver ce code.
Vous pouvez en lire plus à ce sujet ici et ici (tickets github associés).
Après avoir creusé un peu plus, j’ai trouvé this repo qui ajoute services
sur macs.
Voici comment j'ai 'retourné' services
:
~ » brew tap gapple/services
~ » brew services
usage: [Sudo] brew services [--help] <command> [<formula>]
Small wrapper around `launchctl` for supported formulae, commands available:
cleanup Get rid of stale services and unused plists
list List all services managed by `brew services`
restart Gracefully restart selected service
start Start selected service
stop Stop selected service
Options, Sudo and paths:
Sudo When run as root, operates on /Library/LaunchDaemons (run at boot!)
Run at boot: /Library/LaunchDaemons
Run at login: /Users/user/Library/LaunchAgents
Voici une autre solution suggérée: https://Apple.stackexchange.com/questions/150300/need-help-using-homebrew-services-command . Je n'ai pas vérifié moi-même, alors je ne sais pas si et comment cela fonctionne.
$ brew services list
$ brew services stop postgresql
Arrêter postgresql
, mais cela peut prendre un certain temps → Arrêt réussi postgresql
(étiquette: homebrew.mxcl.postgresql))
J'ai eu un problème similaire. J'avais oublié que j'avais intégré 'lunchy' il y a quelques jours et que je l'utilisais comme wrapper de lancement pour initier un pliste ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
au démarrage. pg_ctl n'était pas efficace à cause de la ligne de code suivante <key>KeepAlive<key>
:
<?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
3 <plist version="1.0">
4 <dict>
5 <key>KeepAlive</key>
6 <true/>
7 <key>Label</key>
8 <string>homebrew.mxcl.postgresql</string>
9 <key>ProgramArguments</key>
10 <array>
11 <string>/usr/local/opt/postgresql/bin/postgres</string>
12 <string>-D</string>
13 <string>/usr/local/var/postgres</string>
14 <string>-r</string>
15 <string>/usr/local/var/postgres/server.log</string>
16 </array>
17 <key>RunAtLoad</key>
18 <true/>
19 <key>WorkingDirectory</key>
20 <string>/usr/local</string>
21 <key>StandardErrorPath</key>
22 <string>/usr/local/var/postgres/server.log</string>
23 </dict>
24 </plist>
Essayer de tuer le processus directement n'a pas fonctionné parce que je devais décharger le plist.
launchctl unload homebrew.mxcl.postgresql.plist
J'avais le même problème ... le retrait de l'agent de lancement a résolu le problème pour moi:
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
J'ai contourné cette erreur en utilisant la commande
pg_ctl stop -m immediate
pg_ctl start
Je n'avais pas besoin de décharger le plist de cette façon.
Lors de l'utilisation de PostgreSQL installé par la brasserie, la commande suivante fonctionnait pour l'éteindre.
> brew services stop postgresql
stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
Comme mentionné dans une autre réponse, parcourir la liste des processus, puis tuer tout ce qui est lié à postgres ne fonctionne pas , pas .
ps aux | grep postgres
kill $PID