macos - instalar - postgresql server
Cómo verificar el estado del servidor PostgreSQL Mac OS X (6)
¿Cómo puedo saber si mi servidor Postgresql se está ejecutando o no?
Recibo este mensaje:
[~/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?
Actualizar:
> 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
Actualización 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
A partir de PostgreSQL 9.3, puede usar el comando pg_isready
para determinar el estado de conexión de un servidor PostgreSQL.
De los docs :
pg_isready devuelve 0 al shell si el servidor acepta conexiones normalmente, 1 si el servidor está rechazando conexiones (por ejemplo, durante el inicio), 2 si no hubo respuesta al intento de conexión, y 3 si no se realizó ningún intento (por ejemplo debido a parámetros inválidos).
Depende de dónde está instalado su servidor postgresql. Utiliza el pg_ctl para iniciar el servidor manualmente como se muestra a continuación.
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
El pg_ctl status
sugerido en otras respuestas verifica que el proceso del postmaster exista y, de ser así, informa que se está ejecutando. Eso no significa necesariamente que esté listo para aceptar conexiones o ejecutar consultas.
Es mejor usar otro método como usar psql
para ejecutar una consulta simple y verificar el código de salida, por ejemplo, psql -c ''SELECT 1''
, o usar pg_isready
para verificar el estado de la conexión .
La forma más sencilla de verificar los procesos en ejecución:
ps auxwww | grep postgres
Y busque un comando que se parezca a esto (su versión puede no ser 8.3):
/Library/PostgreSQL/8.3/bin/postgres -D /Library/PostgreSQL/8.3/data
Para iniciar el servidor, ejecuta algo como esto:
/Library/PostgreSQL/8.3/bin/pg_ctl start -D /Library/PostgreSQL/8.3/data -l postgres.log
Probablemente no inicie postgres.
Si instaló usando HomeBrew, el init debe ejecutarse antes de que todo lo demás sea utilizable.
Para ver las instrucciones, ejecuta 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
Una vez que haya ejecutado eso, debería decir algo como:
Éxito. Ahora puede iniciar el servidor de la base de datos usando:
postgres -D /usr/local/var/postgres or pg_ctl -D /usr/local/var/postgres -l logfile start
Si todavía tiene problemas, verifique su firewall. ¡Si usas uno bueno como HandsOff! y fue configurado para bloquear el tráfico, entonces su página no verá la base de datos.
Puede ejecutar el siguiente comando para determinar si el postgreso se está ejecutando:
$ pg_ctl status
También querrás configurar la variable de entorno PGDATA
.
Esto es lo que tengo en mi archivo ~/.bashrc
para 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''
Para que surtan efecto, recuerde utilizarlo de la siguiente manera:
$ . ~/.bashrc
Ahora, pruébalo y deberías obtener algo como esto:
$ show-pg-status
pg_ctl: server is running (PID: 11030)
/usr/local/Cellar/postgresql/9.2.4/bin/postgres