sierra rails mac ruby-on-rails ruby macos postgresql osx-mavericks

ruby-on-rails - rails - rvm brew



Reparando postgresql después de actualizar a OSX Mavericks (10)

Después de instalar PostgreSQL usando homebrew para OS X Mavericks , esto funcionó para mí:

sudo ARCHFLAGS="-arch x86_64" gem install pg

Si ese no es el caso, entonces este comando ha solucionado el problema en mi caso, una vez que ocurrió nuevamente después de actualizar el sistema operativo a OS X Yosemite y OS X El Capitan

sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/[Version-Number]/bin gem install pg -v [gem version]

Además, asegúrese de haber actualizado su Xcode y las command line tools para Xcode .

Una reciente actualización a OSX Mavericks ha roto la conexión de mi base de datos para mi aplicación Rails.

Cuando intento recuperar de la base de datos, el servidor devuelve el siguiente error:

PG::ConnectionBad (could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused Is the server running on host "localhost" (fe80::1) and accepting TCP/IP connections on port 5432?

Cuando intento ejecutar psql obtengo:

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

He probado muchas de las soluciones disponibles en internet. Dicha reinstalación de la gema pg y la configuración del host: localhost en mi database.yml. Mi archivo /usr/local/var/postgres/pg_hba.conf dice:

# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust # Allow replication connections from localhost, by a user with the # replication privilege. #local replication RyanKing trust #host replication RyanKing 127.0.0.1/32 trust #host replication RyanKing ::1/128 trust

que devuelve psql: /usr/local/bin/psql

¿Alguna solución en este caso? Algunas soluciones sugieren que debo cambiar mi $ PATH a mi instalación anterior de postgres, ya que se agregaría una nueva versión de postgres con Mavericks. ¿Cómo puedo encontrar dónde se encuentra? Es muy posible que se haya instalado con homebrew pero no estoy seguro.


En caso de que haya encontrado esta página después de actualizar desde Yosemite, entonces se necesita un enfoque diferente para resolver el problema. Esencialmente la actualización a Yosemite destruye algunos archivos. ¡Puedes encontrar el problema y la solución here !


Hace poco tuve este problema cuando me actualicé a la versión 10.9.4

Después de un día de prueba y error, encontré esta publicación de Joho que solucionó mis problemas: https://gist.github.com/joho/3735740

Asegúrese de cambiar las versiones para que coincidan con sus versiones de instalación. Si tiene varias versiones instaladas como lo hice yo, puede ver qué versiones accediendo a cd / usr / local / Cellar / postgresql. Luego, siga los pasos a continuación pero cambie los números de versión para que coincidan con sus instalaciones.

En resumen:

$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist $ mv /usr/local/var/postgres /usr/local/var/postgres9.2 $ brew update $ brew upgrade postgresql $ initdb /usr/local/var/postgres -E utf8 $ pg_upgrade -b /usr/local/Cellar/postgresql/9.2.1/bin -B /usr/local/Cellar/postgresql/9.3.4/bin -d /usr/local/var/postgres9.2 -D /usr/local/var/postgres $ cp /usr/local/Cellar/postgresql/9.3.4/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/ $ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

Si estás usando rubí, también:

$ gem pristine pg

¡Espero que esto ayude! Lo hizo por mi


Intente agregar esto a su .bash_profile como se indica here :

export PGHOST=localhost


La solución más sencilla es usar http://postgresapp.com, que simplemente funciona

Para realizar la instalación a través de homebrew, asegúrese de hacer una brew update para que Homebrew vuelva a funcionar


Si actualizó con Homebrew, el problema es probablemente el formato de la base de datos. Compruébelo ejecutando el comando postgres directamente:

$ postgres FATAL: database files are incompatible with server DETAIL: The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.3.4.

Dado que todas mis bases de datos de desarrollo son datos semilla, simplemente los eliminé.

$ rm -rf /usr/local/var/postgres $ initdb

Por supuesto, ya que esto mata todo, tendrás que volver a crear tus roles antes de rake db: create puede tener éxito.

$ createuser -s MyApp

Si no conoce el nombre del rol, simplemente ejecute rake db: create. Te lo dirá.


Si instala a través de .dmg, puede volver a instalarlo desde el instalador de Postgres (postgresql-9.1.3-1-osx.dmg en mi caso). Un reinicio podría ser necesario también. Hice esto justo ayer: en realidad, mis bases de datos no se eliminaron y todo está bien ahora.

Algo similar sucedió al pasar de Snow Leopard a Mountain Lion también:

El león de montaña Postgres no pudo conectarse


Tenía el mismo problema. Encontró que la actualización eliminó los procesos y dejó el archivo pid de postgres ahí fuera. Entonces, no seas tan tonto como yo y haz clic en el reinicio para actualizar tu OSX. Asegúrate de cerrar todo limpiamente antes de la actualización.


si lo instaló a través de homebrew, intente esto (desde brew info postgresql )

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Que lo recargará. Postgress.app mi valor predeterminado no encontrará sus bases de datos (deberá PGDATA directorio PGDATA , y podría tener conflictos de versión (si está ejecutando 9.2 y postgress.app es 9.3, un volcado / restauración estaría en orden .

tirando de los comentarios.

ok, así que parece que tienes 9.2.3 instalado, lo que haría es esto.

postgres -D /usr/local/var/postgres

Entonces respáldalos a todos. pg_dumpall > ~/mydatabases.dump

matar postgres

a brew reinstall postgresql , pero advierte que esto te llevará de 9.2.3 a 9.3.1 . Luego psql < mydatabaes.dump importar todas sus bases de datos psql < mydatabaes.dump . Asegúrate de seguir las instrucciones en la descarga / carga de las cosas de launchctl, y en ese momento deberías estar bien. También puede considerar el uso de postgress.app e importar sus bases de datos en esa aplicación, pero de todos modos tendría que hacer una copia de seguridad / volcar su base de datos.


tl; dr ¡Simplemente inicie la aplicación Postgres!

FWIW, tuve exactamente la misma experiencia después de mi actualización de Mavericks y después de:

  • Instalar e iniciar 9.3 (apareció como Postgres93 en mi carpeta de aplicaciones)
  • Moviendo 9.2 a la basura
  • Ver Rails falla porque mis bases de datos no fueron migradas

Luego volví y:

  • Salir 9.3
  • Restaurado 9.2 de la basura
  • Arrancó 9.2

y todo funcionó bien!

Entonces me di cuenta de que

  • El problema era que Postgres no se había ejecutado después de mi instalación de Mavericks
  • Nunca antes había hecho algo explícito para hacer que Postgres se ejecutara al inicio, pero ...
  • Mac OS siempre estaba reiniciando Postgres después de un reinicio porque se estaba ejecutando anteriormente