¿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
macos
postgresql
Ramy
fuente
fuente
Respuestas:
La forma más sencilla de comprobar los procesos en ejecución:
Y busque un comando que se parezca a esto (su versión puede no ser 8.3):
Para iniciar el servidor, ejecute algo como esto:
fuente
pgrep postgres
también funciona. Ops auxwww | grep [p]ostgres
para evitargrep
que lo recojan.ps | grep
sugerencia de mala praxis.pgrep
es aceptable, apenas.pg_ctl status
es genial .ps auxwww | grep postgres
va a coincidirgrep postgres
yless /var/log/postgres/whatever
./Library/PostgreSQL/8.3/data
lo crea arbitrariamente el usuario mediante elinitdb
comando. aquí está el documento 8.3Puede ejecutar el siguiente comando para determinar si se está ejecutando postgress:
También querrá establecer la
PGDATA
variable de entorno.Esto es lo que tengo en mi
~/.bashrc
archivo para postgres:Para que surtan efecto, recuerde obtenerlo así:
Ahora, pruébalo y obtendrás algo como esto:
fuente
Probablemente no iniciaste postgres.
Si lo instaló usando HomeBrew, el init debe ejecutarse antes de que cualquier otra cosa sea utilizable.
Para ver las instrucciones, ejecute
brew info postgres
Una vez que lo haya ejecutado, debería decir algo como:
Si aún tiene problemas, verifique su firewall. Si usa uno bueno como HandsOff! y se configuró para bloquear el tráfico, entonces su página no verá la base de datos.
fuente
A partir de PostgreSQL 9.3, puede utilizar el comando
pg_isready
para determinar el estado de conexión de un servidor PostgreSQL.De los documentos :
fuente
Depende de dónde esté instalado su servidor postgresql. Utiliza pg_ctl para iniciar manualmente el servidor como se muestra a continuación.
fuente
El
pg_ctl status
comando sugerido en otras respuestas verifica que exista el proceso postmaster y, si es 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 ejemplopsql -c 'SELECT 1'
, o usarpg_isready
para verificar el estado de la conexión .fuente
psql -c "SELECT 1" -d {dbname} > /dev/null || postgres -D /usr/local/var/postgres >postgres.log 2>&1 &
si desea verificar e iniciar postgres de una sola vez (útil para scripts de automatización).