2012-07-27 12 views
11

Después de mi actualización al león de montaña, mi postgres hace el trabajo. Todavía se está ejecutando, pero mis aplicaciones ya no se pueden conectar.Mountain Lion Postgres no pudo conectarse

$ ps aux | grep postgres 
postgres   204 0.0 0.0 2446960 836 ?? Ss 7:31AM 0:00.59 postgres: stats collector process  
postgres   203 0.0 0.1 2478732 2240 ?? Ss 7:31AM 0:00.41 postgres: autovacuum launcher process  
postgres   202 0.0 0.0 2478600 584 ?? Ss 7:31AM 0:00.34 postgres: wal writer process  
postgres   201 0.0 0.0 2478600 784 ?? Ss 7:31AM 0:00.48 postgres: writer process  
postgres   95 0.0 0.0 2446960 368 ?? Ss 7:31AM 0:00.11 postgres: logger process  
postgres   64 0.0 0.2 2478600 7972 ?? Ss 7:31AM 0:00.26 /Library/PostgreSQL/9.1/bin/postmaster -D/Library/PostgreSQL/9.1/data 
anezio   10205 0.0 0.0 2432768 624 s000 R+ 8:01AM 0:00.00 grep postgres 

y mis aplicaciones están regresando este error:

could not connect to server: No such file or directory 
Is the server running locally and accepting 
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"? 

Todavía puedo conectar con el comando psql con postgres /Library/PostgreSQL/9.1/bin/psql -U

parece como algo no está apuntando al lugar correcto

+1

suena como si tuviera alguna otra compilación de postgres en esa máquina de la que está usando psql. tal vez podrías contarnos sobre tu historial de instalación también? – araqnid

+0

Lo he instalado usando el instalador de un clic de postgresql.com. Funcionaba bien antes de mi actualización. León de montaña –

+0

He resuelto este problema al desinstalar y reinstalar Postgresql. Gracias –

Respuesta

0

He resuelto este problema mediante la desinstalación y reinstalación de que

2

La ruta predeterminada del socket de dominio Unix está codificada en libpq. Lo que puede haber sucedido es que antes de la actualización, su aplicación utilizaba la biblioteca libpq instalada por el instalador de Postgres con un clic, mientras que después de la actualización se recuperaba una versión diferente de esta.

Para solucionar el problema, desde el punto de vista de un programador, puede especificar el directorio de socket en lugar de confiar en el valor predeterminado. para localizar el directorio correcto si usted no sabe ya, conectarse a cualquier base de datos como superusuario (postgres en general) y emisión en SQL:

SHOW unix_socket_directory; 

A continuación, cambiar o reconfigurar su aplicación con la trayectoria obtenida en el campo de host de la llamada de conexión (por ejemplo, en una cadena de conexión: host=/path/to/socket dbname=d user=u). Libpq lo reconocerá como un directorio de socket de Unix porque comienza con una barra inclinada, a diferencia de un nombre de host o una dirección IP.

8

Acabo de tener el mismo problema. Personalmente acabo de volver a instalar desde el instalador de Postgres (postgresql-9.1.3-1-osx.dmg en mi caso), reinicié mi mac y todo vuelve a estar bien. PD. la reinstalación no borró mis bases de datos :)

5

Compruebe qué psql está usando. Tuve el mismo problema al usar el servidor Postgres.app de Heroku y descubrí que estaba usando el cliente /usr/bin/psql de Apple según mi configuración $PATH. Configure su $PATH para usar su biblioteca Postgres o use la ruta completa a su psql instalado.

+0

Esto funcionó para mí. Brew instala psql en/usr/local/bin – vish

+2

Tengo postgres instalado en la ubicación de preparación/usr/local/bin. Cambié mis/etc/paths para poner/usr/local/bin en la parte superior de las rutas de búsqueda para que las instalaciones de brew se encontraran primero (antes de las instalaciones de/usr/bin). La actualización a Mountain Lion restablece el contenido de/etc/paths; en consecuencia, también comencé a recoger el psql instalado en apple en/usr/bin (y el desagradable mensaje "no se pudo conectar al servidor ...") después de la actualización. Al poner/usr/local/bin de vuelta a la parte superior de/etc/paths solucionamos todo. –

0

El problema es que el león de montaña viene con su propio cliente psql (/ usr/bin/psql) que aparentemente intenta conectarse postgres buscando en el archivo de socket local en una ubicación diferente a la de su instalador. Puede cambiar su variable PATH para incluir primero su carpeta bin de postgres o reemplazar la/usr/bin/psql por defecto con la de su instalación.

1

De alguna manera, olvidé por completo que este archivo de socket se ocultará debido al punto. Asegúrese de utilizar ls -A /tmp/.s.PGSQL.5432 si está revisando para ver si el socket está realmente allí.

Mi aplicación postgres comenzó a aceptar una conexión nuevamente desde psql después de que hice lo siguiente. Creo que tuvo algo que ver con el paso 3.

  1. Salga de la aplicación postgres.
  2. En terminal tipo postgres -D ~/Library/Application\ Support/Postgres/var. Este es el directorio de datos si está usando la aplicación postgres. Si no está usando la aplicación postgres, necesita averiguar qué es realmente el directorio de datos.
  3. Recibí un mensaje de OS X preguntándome si quería permitir el tráfico entrante. Hice clic en sí.
  4. En una pestaña de terminal diferente escriba psql. Debes conectarte exitosamente.
  5. Escriba \q para salir de psql.
  6. De vuelta en la pestaña que ejecuta postgres, escriba ctrl c para detener postgres.
  7. Inicie la aplicación postgres. psql debería funcionar.
Cuestiones relacionadas