ruby on rails - rails - Reparando Postgresql después de actualizar a OSX 10.7 Lion
ruby macos sierra (15)
¿Esto es para homebrew? Ports parece ponerlo en:
/opt/local/lib/postgresql91
Así que asegúrate de usar la exportación
PATH=/opt/local/lib/postgresql91/bin:$PATH
Problema con los puertos de Mac: https://trac.macports.org/ticket/30125
Recientemente actualicé a OSX 10.7, momento en el que mi instalación de rieles se bloqueó completamente al intentar conectar con el servidor psql. Cuando lo hago desde la línea de comandos usando
psql -U postgres
funciona totalmente bien, pero cuando intento ejecutar el servidor o la consola de Rails con el mismo nombre de usuario y contraseña, aparece este error.
...activerecord-3.0.9/lib/active_record/connection_adapters/postgresql_adapter.rb:950:in `initialize'': could not connect to server: Permission denied (PGError)
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
Cualquier idea de lo que podría estar pasando sería muy útil! ¡Gracias!
En mi caso, el servidor no se inició debido a una configuración incorrecta de la memoria compartida. Al principio estaba confundido porque había varios procesos de postgres en ejecución, pero esos eran procesos estándar del sistema. Busque los procesos de postmaster
!
Todo lo que tenía que hacer era cambiar la configuración de la memoria compartida . En mi caso, no era necesario jugar con la configuración del camino.
Es posible que deba especificar el host de su base de datos.
Es un problema de RUTA. Mac OSX Lion incluye Postgresql en el sistema ahora. Si haces un which psql
, verás usr/bin/psql
lugar de usr/local/bin/psql
que es el correcto de HomeBrew. Si ejecuta brew doctor
, debería recibir un mensaje que le indica que debe agregar usr/local/bin
al encabezado de su variable PATH env.
Editar su .bash_profile o .profile, o cualquier shell que esté usando y agregar: export PATH=/usr/local/bin:$PATH
como la primera exportación para el PATH
, salga de la sesión de shell o compile su archivo con source ~/.bash_profile
y ahora debería volver a estar bien.
Me encontré con esto también, pero había instalado postgres (no con homebrew). Si ese es el caso, necesita encontrar la ruta anterior a psql (que puede ser / usr / local / bin, pero para mí era / usr / local / pgsql / bin) y anteponer eso a su $ PATH.
(antes) which psql
=> / usr / bin / psql
(corregir) export PATH = / usr / local / psql / bin: $ PATH
(después) `cuales psql ''=> / usr / local / psql / bin
La sugerencia de John Wang sobre la source ~/.bash_rc
luego de agregarla a tu bash_rc es dorada.
Mi PostgreSQL está instalado en / Library / PostgreSQL, por lo que / usr / var esas cosas no me funcionaron.
Parece que Woz es correcto porque cada vez que cierro la tapa de mi Macbook Pro se bloquea ... Esto es lo que funcionó después de mi bloqueo:
sudo su postgres -c "/Library/PostgreSQL/9.2/bin/pg_ctl -m fast -D /Library/PostgreSQL/9.2/data restart"
No estoy contento con las respuestas más prometedoras, ya que son específicas del usuario del sistema operativo o de reasignar Postgres para usar TCP en lugar de sockets de dominio, como lo indica @pilif. He visto otra solución que implica reordenar las rutas predeterminadas en el nivel del sistema para verificar la ruta de Brew antes de la ruta del sistema central, pero esto parece peligroso ya que podría afectar a todas las otras colisiones de nombres de aplicaciones como esta.
Este sitio detalla una solución que encontró mi compañero de trabajo. Todo se reduce a ejecutar un script de shell único que
- haga una copia de seguridad de los archivos Postgres 8.4 en un directorio separado
- enlace simbólico de la instalación de la cerveza de Postgres en su lugar
Esto viene con la advertencia de que el sistema predeterminado de Postgres es lo que se haya instalado, por lo que debe emitir un juicio acerca de si es adecuado para usted. No creo que necesite Postgres 8.4 específicamente sobre 9.x, pero YMMV
Otra posible solución que funcionó para mí es restablecer el archivo de administrador de correo eliminándolo. Simplemente ejecute:
rm /usr/local/var/postgres/postmaster.pid
Vale la pena revisar el registro para los errores que puede encontrar aquí:
/usr/local/var/postgres/server.log
El mensaje de error que estaba teniendo era:
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 161) running in data directory
"/usr/local/var/postgres"?
Todo funcionó muy bien después.
Para aquellos de ustedes que están interesados, yo armé la solución. Todo lo que necesitaba era añadir
host: localhost
a la database.yml para mi entorno y todo fue gravy.
Para aquellos que instalaron directamente desde el instalador oficial, solo agregar el host al comando funciona sin cambios de ruta:
psql -h localhost -U postgres
Si el problema persiste después de cambiar el camino (como lo hizo para mí), también intente esto ...
gem pristine pg
Parece que el problema (parcialmente) radica en la propia gema pg. Cuando se construye, se da cuenta de dónde debería estar el socket de dominio. Si cambias la ubicación del socket de dominio después del hecho, parece que no tendrá efecto hasta que reconstruyas la gema.
Si te gusta un cambio permanente en tu $ PATH prueba esto:
defaults write $HOME/.MacOSX/environment PATH "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/local/bin"
esto reescribirá su ~/.MacOSX/environment.plist
.
Soy nuevo en Rails, pero agregar lo siguiente a database.yml funcionó para mí:
host: localhost
port: 5432
No estoy seguro de por qué Rails utiliza de forma predeterminada sockets de dominio en lugar de TCP, mientras que PostgreSQL no configura sockets de dominio de forma predeterminada.
Tuve el mismo problema y tenía problemas para hacer que la solución de John Wang funcionara. Como Darren señaló, hay un problema con la gema pg. Para que funcionara necesitaba:
gem uninstall pg
Luego vuelva a instalar.
Lo que lo hizo funcionar.
Tuve este mismo problema con Mountain Lion, pero lo único que funcionó para mí fue esta solución :
Compruebe dónde está el objetivo real:
sudo find / -name .s.PGSQL.5432
Necesitaba crear este directorio:
mkdir /var/pgsql_socket/
Luego, utilizando el resultado de la búsqueda anterior, cree este enlace simbólico:
ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/
Sospecho que para la mayoría de las personas en Mountain Lion, puedes crear el directorio y hacer el enlace simbólico y no perder el tiempo haciendo el hallazgo a menos que el enlace simbólico no funcione.
PS: mi PostgreSQL se instaló a través del instalador oficial.