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