Postgres DB no se inicia en Mac OSX: ERROR dice: conexiones en el socket de dominio Unix [cerrado]

81

Instalé Postgresql y luego ejecuté un montón de aplicaciones de rieles en mi Mac OSX Mountain Lion local y creé bases de datos, etc. Hoy, después de un tiempo, cuando inicié pgAdminIII e intenté iniciar un servidor de base de datos, recibí este error:

ingrese la descripción de la imagen aquí

Un google rápido mostró esta publicación. Más búsquedas apuntaron al hecho de que podría haber algún tipo de archivo postmaster.pid por ahí que podría ser la causa raíz de esto. Si elimino eso, todo irá bien.

Sin embargo, antes de eliminar cosas en mi computadora, quería asegurarme de que estoy depurando esto de una manera sistemática, lo que no daría lugar a más problemas.

En algún lugar leí que antes de eliminar ese archivo, necesito ejecutar este comando:

  ps auxw | grep post

Si no obtengo resultados, está bien eliminar el archivo. De lo contrario, no. Bueno, obtuve este resultado de ese comando:

  AM               476   0.0  0.0  2423356    184 s000  R+    9:28pm   0:00.00 grep post

Así que ahora, por supuesto, estoy completamente confundido.

¿Entonces qué debo hacer?

Aquí está parte de mi registro de errores del servidor de Postgres:

 FATAL:  lock file "postmaster.pid" already exists
 HINT:  Is another postmaster (PID 171) running in data directory "/usr/local/var/postgres"?

Postgresql todavía no se está ejecutando, sigue recibiendo el mismo error y nada ha cambiado. Soy demasiado cobarde para borrar cosas sin comprobar SO.

¿Podrían algunos de ustedes expertos guiar a un novato?

Gracias

rey bandido
fuente
Primero, no soy un experto. Dicho esto, parece que su base de datos no se cerró correctamente. Quitaría el archivo pid e intentaría iniciar la base de datos.
fbynite
Sí, eso es lo que quiero hacer, pero leí en alguna parte que esto puede causar un daño permanente a la base de datos si se está ejecutando un pid mientras se hace. No estoy seguro de qué se trataba todo eso
banditKing
@banditKing Nunca deberías necesitar borrar postmaster.pid. El servidor lo elimina al inicio si no es válido (obsoleto) y es importante para la protección de datos. Por favor, explique cómo instaló PostgreSQL en su ordenador para empezar - a través de EnterpriseDB instalador, homebrew, Postgres.app, qué? También mencione la versión de PostgreSQL. Finalmente, si agrega explícitamente "localhost" a las opciones de conexión en Pgadmin-III, ¿funciona? Si es así, te está mordiendo una decisión de empaque realmente mala que Apple tomó hace un tiempo ...
Craig Ringer
@CraigRinger gracias por aclarar. No recuerdo cómo lo instalé, fue hace un tiempo. ¿Hay algo que pueda hacer? O los datos allí son solo datos de prueba, por lo que, en el peor de los casos, puedo desinstalar y reinstalar. ¿Algún buen blog / tutorial sobre cómo hacerlo correctamente?
banditKing
1
@banditKing ¿Intentó reiniciar? Puede identificar cómo lo instaló desde esto: wiki.postgresql.org/wiki/Installers/Mac_OS_X . Parece que probablemente usaste Homebrew. Si el servidor de PostgreSQL no se elimina de forma incorrecta postmaster.pid, puede eliminarlo después de verificar que no hay postgresprocesos en ejecución, es vital que se asegure de que de hecho no hay procesos de PostgreSQL. Sin postmaster.pidembargo, si el servidor no elimina un archivo obsoleto, me parece un error.
Craig Ringer

Respuestas:

192

Hoy tuve el mismo problema en Mac Sierra. En Mac Sierra puedes encontrar postmaster.piddentro /Users/<user_name>/Library/Application Support/Postgres/var-9.6. Eliminar postmaster.pidy se solucionará el problema.

r3b00t
fuente
19
Se eliminó postmaster.piden esta ubicación y se solucionó el problema. ¡Gracias!
JLF
1
Aquí también es donde necesitaba encontrar el postmaster.pidarchivo ya que estoy usando Postgres.app
Jarsen
3
Para Postgres.app es lo mismo: podría ser que esté ubicado aquí/Users/<user>/Library/Application\ Support/Postgres/var-10/postmaster.pid
Simon Franzen
1
También estoy usando Postgres.app ejecutando v10. Si mi Mac tiene un apagado inesperado mientras Postgres se está ejecutando, entonces necesito eliminar el archivo postmaster.pid cuando reinicio la computadora. ¿Alguien sabe si ese es el comportamiento esperado de la aplicación? Parece un diseño extraño si es deliberado.
Alexander
Asegúrese de que el proceso se haya reducido antes de eliminar este archivo. Puede ejecutar cat postmaster.piden el directorio para echar un vistazo y hacer referencia a que no ve el PID ejecutándose en algo como el monitor de actividad. La interfaz de usuario de Postgres te alertará sobre esto, pero pensé que debería ponerlo aquí antes de que la gente se dé cuenta de cómo comprobarlo tú mismo. También debería ser suficiente buscar postgresen el monitor de actividad y eliminar todo lo que esté relacionado, o simplemente reiniciar su sistema y luego eliminar el archivo. No hacer esto podría resultar en una base de datos corrupta 🔥
CTS_AE
42

Esto puede suceder si la base de datos no se cerró correctamente. Para solucionarlo, simplemente elimine elpostmaster.pid archivo. La ubicación difiere según su sistema operativo:

Mac OS:

 rm /Users/<user_name>/Library/Application\ Support/Postgres/var-9.6/postmaster.pid

o usando Postgres.app:

 rm /Users/<user>/Library/Application\ Support/Postgres/var-10/postmaster.pid

Linux:

 rm /usr/local/var/postgres/postmaster.pid
sqren
fuente
2
¡Gracias, esta solución funciona! Después de eliminarlo postmaster.pidy ejecutarlo postgres -D /usr/local/var/postgres, me advierte sobre la causa del error: "el sistema de base de datos no se cerró correctamente; recuperación automática en curso"
Hoang Le
esto resolvió mi problema
Fabrice Yopa
Esto funciona. En mi caso, el archivo pid no se eliminó debido a un reinicio completo, por lo que solo tuve que hacer una copia de seguridad.
George C
21

Tengo la base de datos funcionando ahora.

Estos son los pasos que tomé:

  1. Reinicié mi computadora
  2. Abrí la terminal y corrí cd /
  3. Entonces lo hice ls -la
  4. Me aseguré de que pudiera llegar a MackintoshHD/usr/local/var/postgres
  5. Entonces hizo ls -la
  6. Aquí vi el archivo postmaster.pid
  7. Ejecuté este comando cp postmaster.pid ~/Desktop que copió el archivo en mi escritorio.Me gusta hacer esto si estoy borrando archivos. Si algo sale mal, puedo devolverlo
  8. Luego ejecuté este comando para eliminar el archivo del directorio postgres rm -r postmaster.pid
  9. Fui a mi gui pgadmin3 y lo encendí. y voila funcionó :)

Gracias a @Craig Ringer por su ayuda

rey bandido
fuente
6
El mío no estaba en / usr / local / var / postgres sino en / Users / [myhome] / Library / Application Support / Postgres / var-9.5 / - el último directorio depende de su versión, eliminó postmaster.pid y funcionó como un encanto, gracias
Radek
4

Estoy usando Postgres.app, y lo siguiente funcionó para mí:

Ingresé los comandos en mi terminal a continuación, ubicando la carpeta Postgres de antemano y sin usar "justin".

$declare -x PGDATA="/Users/justin/Library/Application Support/Postgres/var-9.4"

$pg_ctl restart -m immediate

Como Justin explica en su publicación, el resultado después de esto fue:

esperando a que el servidor se apague ……………………………………………………… falló pg_ctl: el servidor no se apaga

Después de ingresar el comando nuevamente:

$pg_ctl restart -m immediate

Funcionó y recibí este mensaje:

pg_ctl: el proceso del servidor antiguo (PID: 373) parece haberse ido iniciando el servidor de todos modos el servidor iniciando LOG: el sistema de la base de datos se interrumpió; último conocido en 2015-07-28 18:15:26 PDT LOG: el sistema de base de datos no se cerró correctamente; recuperación automática en curso LOG: registro con longitud cero en 0 / 4F0F7A8 LOG: no es necesario rehacer LOG: el sistema de base de datos está listo para aceptar conexiones LOG: iniciador de autovacío iniciado

Fuente

Andrew Southard
fuente