Recientemente actualicé mi máquina de Mac OS X Lion (10.7.4) a Mountain Lion (10.8) y creo que ha borrado mi instalación de PostgreSQL. Fue instalado originalmente a través de Homebrew. No soy un DBA, pero espero que alguien pueda decirme cómo solucionar esto.
No puedo conectarme (pero antes pude antes de Mountain Lion):
$ psql -U rails -d myapp_development
psql: 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"?
Pero Postgres todavía se está ejecutando claramente:
$ ps aux | grep postgres
meltemi 2010 0.0 0.0 2444124 5292 ?? Ss Wed01PM 0:00.02 postgres: rails myapp_development [local] idle
meltemi 562 0.0 0.0 2439312 592 ?? Ss Wed12PM 0:02.28 postgres: stats collector process
meltemi 561 0.0 0.0 2443228 1832 ?? Ss Wed12PM 0:01.57 postgres: autovacuum launcher process
meltemi 560 0.0 0.0 2443096 596 ?? Ss Wed12PM 0:02.89 postgres: wal writer process
meltemi 559 0.0 0.0 2443096 1072 ?? Ss Wed12PM 0:04.01 postgres: writer process
meltemi 466 0.0 0.0 2443096 3728 ?? S Wed12PM 0:00.85 /usr/local/bin/postgres -D /usr/local/varpostgres -r /usr/local/var/postgres/server.log
Y está respondiendo a consultas (tanto de una base de datos de prueba como de la base de datos de desarrollo) de una aplicación Rails local
User Load (0.2ms) SELECT "users".* FROM "users"
Rendered users/index.html.haml within layouts/application (1.3ms)
Parece que no hay /var/pgsql_socket/
directorio, y mucho menos el /var/pgsql_socket/.s.PGSQL.5432
archivo de socket mencionado anteriormente. ¿Quizás la instalación de Mountain Lion eliminó eso?
$ ls -l /var/ | grep pg
drwxr-x--- 2 _postgres _postgres 68 Jun 20 16:39 pgsql_socket_alt
¿Cómo puedo solucionar esto?
postgresql
psql
mac-os-x
Meltemi
fuente
fuente
/usr/local/var/postgres/server.log
?$PATH
cambio con la actualización/usr/bin
está por delante/usr/local/bin
y creo que Mountain Lion puede venir con PostgreSQL preinstalado! Investigando ...Respuestas:
Descubrí que tenía un problema extremadamente similar, es decir, que postgres estaba abriendo un socket en el
/var/pgsql_socket_alt
que ninguno de mi software espera verse, pero la solución a mi problema no era solo un problema con mi$PATH
.Tuve que crear el directorio
/var/pgsql_socket
, Chown a mí mismo, y el conjuntounix_socket_directory
depostgresql.conf
(ubicado en/usr/local/var/postgres
) a ese directorio, a continuación, utilizar elpg_ctl
binario en/usr/local/bin
para iniciar el servidor postgres derecho con éxito (que es donde$PATH
entra en juego - Asegúrese de quewhich pg_ctl
el resuelve/usr/local/bin/pg_ctl
, o simplemente siempre llámalo explícitamente).Esto podría ayudar a otros usuarios que encuentren esta pregunta a través de la
/var/pgsql_socket_alt
mención.fuente
$PATH
como lo he hecho.Una explicación plausible y típica sería que lo
psql
que viene con homebrew es/usr/local/bin/psql
diferente al que estaría en su $ PATH, como/usr/bin/psql
(incluido con OS X). Es posible que desee probar con la ruta completa:$ /usr/local/bin/psql -U rails -d myapp_development
Además, hay algo bastante inusual en el
ps
resultado de su pregunta: el servidor postgres se ejecuta bajo unmeltemi
usuario de Unix, mientras que generalmente, elpostgres
usuario dedicado de Unix se utiliza para eso.fuente
_postgres
(con guión bajo) para usuario / grupo son desconocidos para mí. ¿Es eso un artefacto o se espera?$PATH
problema como usted dijo. Las cosas funcionan como antes cuando uso/usr/local/bin/psql
para acceder a la base de datos. O Lion no tenía un sistema PostgreSQL o mi $ PATH se configuró de manera diferente. Ha pasado un año desde la última vez que me confundí con esto, así que no puedo recordar exactamente. En cuanto al usuario de Unix ... con una instalación Homebrew de PostgreSQL, el servidor se inicia mediante launchd y el usuario se configura como el usuario local que lo instaló, por defecto. Las cosas se configuran de manera diferente en Mac OS X Server, que inicia PostgreSQL automáticamente enpostgres
.No conozco ningún archivo de configuración para el cliente psql. Sin embargo, psql respeta varias variables de entorno que se correlacionan con las opciones de la línea de comandos.
Entonces, para que el psql use automáticamente el socket de su elección, puede configurar la variable PGHOST en el directorio que contiene el socket. es decir
fuente
Tratar:
o
fuente
Tarde, pero me pareció útil: http://tammersaleh.com/posts/installing-postgresql-for-rails-3-1-on-lion
Eso fue para Lion, pero estaba teniendo los mismos problemas que el de este hilo después de actualizar de 10.6.8 a Mountain Lion y haber instalado PostgreSQL a través de HomeBrew antes mientras estaba en 10.6.8. También tuve la misteriosa
/var/pgsql_socket_alt
carpeta después de la actualización, pero la/var/pgsql_socket
eliminé y la creé según lo sugerido por @wolftron. Sin embargo, esa no fue la solución final.Si lo dejo en
unix_socket_directory
blanco / comentépostgresql.conf
, cualquier proyecto existente antes de la actualización se quejaría de que/var/pgsql_socket
faltaba el socket . Pero si cambié conf y codificadovar/pgsql_socket
, cualquier proyecto nuevo se quejaría de que/tmp
faltaba el socket . Muy frustrante ... hasta que lo reinstalépg gem
en un proyecto anterior a 10.8 (gem uninstall pg && gem install pg
) y lo dejéunix_socket_directory
comentado en elconf
archivo. Despuéspg_ctl
de reiniciar rápidamente el servidor, los proyectos nuevos y antiguos funcionaron. Mi zócalo pgsql vive/tmp
ahora, fwiw.Nota al margen: si está utilizando
activerecord-postgresql-adapter
gem, desinstálelo primero, luego vuelva a instalar pg, luegoactiverecord-postgresql-adapter
vuelva a instalarlo .fuente
Acabo de registrarme en el dba SE, por lo que parece que no puedo comentar la publicación relevante (¡qué tontería!).
Sin embargo, estaba seguro de que estaba en el mismo barco que @thure. Me aseguré de que / usr / local / bin estuviese antes en mi RUTA que / usr / bin, había comprobado con qué binarios se había encriptado el shell
which
ytype
, etc.Vi los mismos síntomas que @thure. Entonces tuve una epifanía; Me di cuenta de que había reconstruido la
pg
gema (estoy usando Ruby) en un shell cuya RUTA se había visto afectada negativamente por el path_helper de Mac (que se ejecuta desde / etc / profile y pone / usr / bin antes / usr / local / bin) .Desinstalé pg y lo reinstalé en un shell cuya RUTA era correcta. De repente me pude conectar!
Por lo tanto, asegúrese de volver a compilar los enlaces de idioma de las personas y permita que encuentren la copia correcta de (presumiblemente)
pg_config
.fuente
Encontré esta respuesta: https://stackoverflow.com/questions/10763143/in-rails-couldnt-create-database-for-adapter-postgresql Y, tan simple como fue, funcionó para mí ... ejecutó un
$bundle update
y comenzó a funcionar de nuevo.fuente
Descubrí que simular la ubicación real con la ubicación esperada funcionó bien:
siguiendo las líneas de la respuesta aceptada por @thure pero más simple.
fuente
Aquí está, 2016, El Capitán está allá afuera, y Apple sigue cambiando las cosas. Postgres se instala como parte del sistema operativo y el archivo de configuración de postgres establece la propiedad unix_socket_directories en postgresql.conf en / tmp. El socket está en /tmp/.s.PGSQL.5432. Pude solucionar el problema ejecutando lo siguiente:
Espero que esto ayude a alguien.
fuente
Busque el archivo de socket correcto
Del resultado obtenga la ruta al archivo y use la ruta con el parámetro "-h" dentro del comando psql
Por ejemplo, esta es la forma en que me conecto a la base de datos Calendario y Contactos de macOS Server (dentro de una sesión ssh al servidor):
Luego, el archivo de socket en la ruta se usaría para conectarse.
fuente
Por defecto, postgres parece estar intentando conectarse a través de unix-domain-sockets. ENCHUFE DE DOMINIO UNIX
Esto me sucedió cuando estaba ejecutando la instancia de Postgres en Docker. Debe ver qué tipo de conexión está aceptando su servidor. Para mí fue claramente TCP y no socket de dominio Unix.
Agregar un marcador para aceptar el host redirigió la conexión a la ruta correcta y solucionó el problema.
PD: los sockets de dominio Unix funcionan a nivel de kernel y la conexión no tiene que pasar por todo el jazz necesario para las conexiones TCP. Son bastante rápidos y eficientes cuando desea realizar una conexión a su propia máquina desde un proceso diferente como parte de la comunicación entre procesos.
fuente
Hola mundo :)
La mejor pero extraña forma para mí era hacer lo siguiente.
1) Descargue postgres93.app u otra versión. Agregue esta aplicación a la carpeta / Aplicaciones /.
2) Agregue una fila (comando) en el archivo
Es un CAMINO a.bash_profile
(que está en mi directorio de inicio):psql
partir dePostgres93.app
. La fila (comando) se ejecuta cada vez que se inicia la consola.3) Ejecutar
Postgres93.app
desde la/Applications/
carpeta. Inicia un servidor local (el puerto es "5432" y el host es "localhost").4) ¡ Después de todas estas manipulaciones me alegré de ejecutar
$ createuser -SRDP user_name
y otros comandos y ver que funcionó!Postgres93.app
puede ejecutarse cada vez que se inicia su sistema.5) Además, si desea ver sus bases de datos gráficamente, debe instalarlas
PG Commander.app
. Es una buena manera de ver su base de datos postgres como bonitas tablas de datosPor supuesto, es útil solo para el servidor local. Me alegrará si estas instrucciones ayudan a otros que se han enfrentado a este problema.
fuente
No puedo encontrar rápidamente el enlace donde encontré esta pepita, pero funcionó para mí.
export PGHOST = localhost
Oh, aquí está el enlace. https://stackoverflow.com/questions/13868730/socket-file-var-pgsql-socket-s-pgsql-5432-missing-in-mountain-lion-os-x-ser
fuente
Recibí este mismo error al intentar ejecutar
psql
en la línea de comando. Resultó que mi solución era mucho más simple. Había configurado mal el puerto de escucha en el archivo de configuración: /etc/postgresql/9.4/main/postgres.conf . Había cambiado el puerto de port = 5432 a port = 5433. Cuando volví a cambiar a 5432, funcionó como se esperaba.Para probar si ha hecho algo similar, puede ejecutar
$ psql -p5433
Hay varias opciones útiles como esta para el comando psql que puede encontrar aquí: http://www.postgresql.org/docs/9.4/static/app-psql .html para que pueda probar su PROPIA mala configuración particular. Por supuesto, simplemente puede eliminar su último conjunto de cambios de configuración de los archivos * .conf, también, para probar si esos son el origen de su problema. Creo que vale la pena echarle un vistazo antes de perder el tiempo con los permisos y las propiedades de los archivos. (Solo no te olvides de/etc/init.d/postgresql restart
)Lo que NO pude encontrar fue el archivo de configuración que establece los valores predeterminados para el comando psql CLI. ¿Alguien puede comentar con eso, por favor?
Para mí, siempre vuelvo a mi primer principio de programación: "¡Normalmente soy la fuente de cualquier error!"
fuente