ruby-on-rails - proyecto - rails new myapp postgresql
No se puede conectar a PostgreSQL local (21)
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"?
Estoy buscando la solución por un tiempo. Entonces, este también me arregló el problema (reiniciar db):
rm -r /usr/local/var/postgres
initdb /usr/local/var/postgres -E utf8
pg_ctl -D /usr/local/var/postgres -l logfile start
Uso OS X 10.11.3 con brew.
Me las arreglé para poner bork en mi entorno de desarrollo local.
Todas mis aplicaciones Rails locales ahora están dando el error:
PGError
could not connect to server: Permission denied
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
No tengo idea de lo que ha causado esto.
Mientras buscaba una solución, actualicé todas las gemas incluidas, las gemas del sistema actualizadas y los MacPorts actualizados. Sin alegría.
Otros han informado sobre este problema al actualizar de OSX Leopard a Lion, debido a la confusión sobre qué versión de Postgres se debe utilizar (es decir, la versión de OSX o la versión de MacPorts). He estado ejecutando Lion durante varios meses, por lo que parece extraño que esto suceda ahora.
Soy reacio a meterme demasiado sin haber entendido primero cuál es el problema. ¿Cómo puedo depurar esto metódicamente?
¿Cómo puedo determinar cuántas versiones de PostgreSQL hay en mi sistema, a cuál se accede y dónde está ubicado? ¿Cómo soluciono esto si se está utilizando el PostgreSQL incorrecto?
Perdón por las preguntas novatos. ¡Todavía estoy aprendiendo cómo funciona esto! Gracias por cualquier puntero.
EDITAR
Algunas actualizaciones basadas en sugerencias y comentarios a continuación.
Traté de ejecutar pg_lsclusters
que devolvió un error de command not found
.
Luego intenté localizar mi archivo pg_hba.conf y encontré estos tres archivos de muestra:
/opt/local/share/postgresql84/pg_hba.conf.sample
/opt/local/var/macports/software/postgresql84/8.4.7_0/opt/local/share/postgresql84/pg_hba.conf.sample
/usr/share/postgresql/pg_hba.conf.sample
Entonces, ¿supongo que hay 3 versiones de PSQL instaladas? Macports, OSX predeterminado y ???
Luego hice una búsqueda para la secuencia de comandos de inicio ps -ef | grep postgres
ps -ef | grep postgres
que regresó
0 56 1 0 11:41AM ?? 0:00.02 /opt/local/bin/daemondo --label=postgresql84-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper restart ; --pid=none
500 372 1 0 11:42AM ?? 0:00.17 /opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb
500 766 372 0 11:43AM ?? 0:00.37 postgres: writer process
500 767 372 0 11:43AM ?? 0:00.24 postgres: wal writer process
500 768 372 0 11:43AM ?? 0:00.16 postgres: autovacuum launcher process
500 769 372 0 11:43AM ?? 0:00.08 postgres: stats collector process
501 4497 1016 0 12:36PM ttys000 0:00.00 grep postgres
Publiqué los contenidos de postgresql84-server.wrapper en http://pastebin.com/Gj5TpP62 .
Intenté ejecutar la port load postgresql184-server
pero recibí un error. Error: Port postgresql184-server not found
.
Todavía estoy muy confundido sobre cómo solucionar esto, y aprecio cualquier sugerencia de "para tontos".
¡Gracias!
EDIT2
Este problema comenzó después de que tuve algunos problemas con Daemondo. Mis aplicaciones locales de Rails se bloquearon con un error de aplicación a lo largo de las líneas de "la gema de daemondo no se puede encontrar". Luego revisé una serie de actualizaciones de paquetes, actualizaciones de gemas, actualizaciones de puertos y actualizaciones de brew para intentar encontrar el problema.
¿Podría este error ser un problema con daemondo?
Así es como resolví ese mensaje de error, basado en parte en la respuesta de wildplasser.
find / -name .s.PGSQL.5432 -ls 2> /dev/null
=> ... /tmp/.s.PGSQL.5432
Entonces, está mi socket o lo que sea, pero el cliente lo busca en:
/var/run/postgresql/.s.PGSQL.5432
Simplemente haga un enlace simbólico al /tmp/.s.PGSQL.5432
:
sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
Espero que esto ayude a cualquiera. Parece una especie de error, pero bueno, ¡funciona!
Empecé a recibir esto después de actualizar a un nuevo postgres: no me di cuenta de que tenía archivos de datos de espera.
Primero intenté iniciar el servidor postgres:
postgres -D /usr/local/var/postgres
que es cómo vi este error
FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 9.0, which is not compatible with this version 9.3.5.
Entonces encontré esta respuesta en SO - relacionada con un error de incompatibilidad: https://serverfault.com/questions/342626/how-do-i-upgrade-postgresl-database-incompatibility-error
Esto es lo que lo solucionó
mv /usr/local/var/postgres /usr/local/var/postgres.old
initdb -D /usr/local/var/postgres
En mi caso, ninguna de las soluciones anteriores fue buena. En lugar de usar socket, puede usar el número de port
TCP + host
en el archivo de configuración de Rails. Entonces, en el archivo database.yml
simplemente agrega dos líneas como aquí:
...
adapter: postgresql
encoding: unicode
pool: 5
host: localhost
port: 5432
Esto resolvió mi problema :)
Antes de usar esta corrección:
sudo mkdir /var/run/postgresql
sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
Pero después de cada reinicio /tmp/.s.PGSQL.5432
se eliminó y tuve que repetir estos comandos. La solución funciona, pero es horrible, así que mejor modificar el archivo de configuración de la base de datos de Rails :)
Estaba obteniendo el mismo error (resulta que fue un error con postmaster.pid
. Así es como obtuve postgres funcionando nuevamente ( crédito a Ricardo Burillo por la solución ):
$ rm /usr/local/var/postgres/postmaster.pid
$ pg_resetxlog -f /usr/local/var/postgres
Esto me sucedió hoy después de la muerte de la batería de mi Macbook. Creo que esto puede ser causado por un apagado incorrecto. Todo lo que tienes que hacer en casos como el mío es eliminar postmaster.pid
Navega a la carpeta
cd /usr/local/var/postgres
Compruebe si postmaster.pid está presente
ls
Eliminar postmaster.pid
rm postmaster.pid
Esto realmente parece un error de permisos de archivos. Los sockets de dominio Unix son archivos y tienen permisos de usuario como cualquier otro. Parece que el usuario de OSX que intenta acceder a la base de datos no tiene permisos de archivos para acceder al archivo de socket. Para confirmar esto, he hecho algunas pruebas en Ubuntu y psql para tratar de generar el mismo error (incluido a continuación).
/var/pgsql_socket
verificar los permisos en el archivo de socket y sus directorios /var
y /var/pgsql_socket
. Su aplicación Rails (usuario de OSX) debe tener permisos de ejecución (x) en estos directorios (preferiblemente otorgar permisos a todos) y el socket debe tener permisos completos (wrx). Puede usar ls -lAd <file>
para verificar esto, y si alguno de ellos es un enlace simbólico, debe verificar el archivo o directorio al que apunta el enlace.
Puede cambiar los permisos en el directorio para usted mismo, pero el socket está configurado por postgres en postgresql.conf
. Esto se puede encontrar en el mismo directorio que pg_hba.conf
(Tendrás que averiguar cuál). Una vez que haya establecido los permisos, deberá reiniciar postgresql.
# postgresql.conf should contain...
unix_socket_directory = ''/var/run/postgresql'' # dont worry if yours is different
#unix_socket_group = '''' # default is fine here
#unix_socket_permissions = 0777 # check this one and uncomment if necessary.
EDITAR:
He hecho una búsqueda rápida en google, que es posible que desee examinar para ver si es relavent. Esto bien podría dar como resultado cualquier intento de find
su archivo de configuración que falla.
http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Error de mensajes:
Usuario no encontrado en pg_hba.conf
psql: FATAL: no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off
Usuario fallido de autenticación de contraseña:
psql: FATAL: password authentication failed for user "couling"
Falta el archivo de socket de Unix:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
El socket de Unix existe, pero el servidor no lo escucha.
psql: could not connect to server: Connection refused
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Permisos de archivos incorrectos en el archivo de socket de Unix :
psql: could not connect to server: Permission denied
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Hola Mundo :)
La mejor pero extraña forma para mí fue hacer las siguientes cosas.
1) Descarga postgres93.app u otra versión. Agregue esta aplicación a la carpeta / Aplicaciones /.
2) Agregue una fila (comando) en el archivo .bash_profile
(que está en mi directorio personal):
export PATH=/Applications/Postgres93.app/Contents/MacOS/bin/:$PATH Es una RUTA para psql
de Postgres93.app
. La fila (comando) se ejecuta cada vez que se inicia la consola.
3) Lanza Postgres93.app
desde la carpeta /Applications/
. 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 para ver si funcionaba. Postgres93.app
puede ejecutarse cada vez que se inicia el sistema.
5) También, si quiere ver sus bases de datos gráficamente, debe instalar PG Commander.app
. Es una buena manera de ver tu DB de Postgres como tablas de datos bonitas
Por supuesto, es útil solo para el servidor local. Estaré contento si estas instrucciones ayudan a otros que se han enfrentado con este problema.
Intente desinstalar la gema de pg ( gem uninstall pg
) y luego vuelva a instalarla. Si usa bundler, entonces bundle install
, else gem install pg
. Además, asegúrese de que path elija la versión correcta: Lion tiene una versión de posgresql (las versiones anteriores no) y puede estar en la ruta antes de su versión instalada localmente (por ejemplo, MacPorts, homebrew).
En mi caso: instalación homebrew de postgresql, postgresql actualizado, rieles, etc. y luego recibí este error. Desinstalar y reinstalar la gema pg lo hizo por mí.
La ubicación del archivo de socket se procesa en la gema en el momento de la compilación. Por lo tanto, necesitas reconstruir tu joya pg.
gem pristine pg
# or
bundle exec gem pristine pg
Esto debería resolver ese problema en particular.
Leí muchos temas sobre este error y la solución para mí fue simplemente reiniciar el postgres con:
sudo service postgresql restart
Que no se menciona aquí
Lo que resolvió este error para mí fue eliminar un archivo llamado postmaster.pid en el directorio postgres. por favor vea mi pregunta / respuesta usando el siguiente enlace para instrucciones paso a paso. mi problema no estaba relacionado con los permisos de archivos:
psql: no se pudo conectar al servidor: no existe tal archivo o directorio (Mac OS X)
las personas que respondieron a esta pregunta dejaron de jugar, ¡gracias por eso! Subí todo lo que pude
MacOSX aquí. Tuve el mismo problema después de actualizar mi instalación postresql de un pre-9.1 a 9.1.2 usando homebrew. (Por cierto, recuerde volcar las bases de datos antes de la actualización con pg_dump, las bases de datos anteriores a la 9.1 son incompatibles). Mismo problema, los mismos mensajes de error.
La desinstalación de la gema pg fue lo mejor para mí. De hecho, tuve que bailar bastante para descubrir el problema. Primero hice una desinstalación global de gemas, despejando el mazo de todas las gemas antiguas (había algunas). Luego eliminé pg de mi Gemfile, rebundled, restauré la referencia de pg y rebotó una vez más.
Después de eso, funcionó a las mil maravillas.
Mi intuición es que esto es (una vez más) una cosa de mac / OSX: la interfaz y la parte de atrás asumen una ubicación diferente para el socket del dominio de Unix (que funciona como un punto de encuentro ).
Lista de verificación:
- Está funcionando postgres:
ps aux | grep postgres | grep -v grep
ps aux | grep postgres | grep -v grep
ps aux | grep postgres | grep -v grep
debería hacer el truco - Dónde se encuentra el socket:
find / -name .s.PGSQL.5432 -ls
(el socket solía estar en / tmp; podría empezar a buscar allí) - incluso si localiza el socket (dominio de Unix), el cliente podría usar una ubicación diferente. (Esto sucede si mezclas distribuciones, o si tienes una distribución instalada en algún lugar y tienes otra instalación (por ejemplo, desde la fuente) en otro lugar), con el cliente y el servidor usando diferentes direcciones de encuentro.
Si postgres se está ejecutando, y el socket realmente existe, podrías usar:
-
psql -h /the/directory/where/the/socket/was/found mydbname
(que intenta conectarse al socket de dominio de Unix)
; ahora debería obtener el indicador psql: pruebe /d
y luego /q
para salir. También puedes probar:
-
psql -h localhost mydbname
.
(que intenta conectarse a localhost (127.0.0.1)
Si estos intentos fallan debido a una autorización insuficiente, puede modificar pg_hba.conf (y SIGHUP o reiniciar) En este caso: también verifique los registros.
Una pregunta similar: no se puede iniciar Postgres
Nota: Si puede acceder al indicador psql, la solución rápida a este problema es simplemente cambiar su config/database.yml
, agregar:
host: localhost
o podrías intentar agregar:
host: /the/directory/where/the/socket/was/found
En mi caso, host: /tmp
Obtuve este error cuando estaba configurando Posgtres con Django, estoy usando Back Track y viene con Postgres instalado. Supongo que la configuración es el problema. Lo arreglé quitándolo por completo y luego volviendo a instalarlo.
sudo apt-get remove postgresql
sudo apt-get purge postgresql
Ahora ejecuta:
apt-get --purge remove postgresql/*
para eliminar todo PostgreSQL de su sistema. Solo purgar el paquete postgres no es suficiente, ya que es solo un metapaquete vacío.
Una vez que se hayan eliminado todos los paquetes de PostgreSQL, ejecute:
rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres
Ahora debería poder:
apt-get install postgresql
Probé la mayoría de las soluciones a este problema pero no pude hacer que funcionara.
lsof -P | grep '':5432'' | awk ''{print $2}''
lsof -P | grep '':5432'' | awk ''{print $2}''
lsof -P | grep '':5432'' | awk ''{print $2}''
que mostró el PID del proceso en ejecución. Sin embargo, no pude matarlo con kill -9 <pid>
.
Cuando ejecuté pkill postgresql
el proceso finalmente se detuvo. Espero que esto ayude.
Si obtiene un error similar:
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"?
Esto podría hacer el truco (lo hizo por mí):
initdb /usr/local/var/postgres -E utf8
El directorio especificado debe ser diferente si no está utilizando OSX / Brew.
Nota: Este no es el mensaje de error exacto visto anteriormente, pero este hilo es el primer resultado para ese mensaje de error.
Solo confirmó que tenía un problema similar en PSQL y Django,
Parecía porque mi servidor psql no se cerró correctamente y el archivo postmaster.pid todavía estaba presente (debería eliminarse en el apagado correcto automáticamente) en mi carpeta postgres.
Eliminado esto y todo bien
Tuve este problema que me atormentaba, y luego de una investigación más profunda (ejecución de rake db:setup
), vi que los rieles estaban tratando de conectarse a una instancia de postgres previamente utilizada, una que se almacenaba en variables env como DATABASE_URL.
La solución: unset DATABASE_URL
fuente: https://.com/a/17420624/2577622
Tuve un problema similar cuando traté de usar postgresql con rieles. La actualización de mi Gemfile para usar la nueva versión de gem pg resuelve este problema para mí. (gema pg versión 0.16.0 funciona). En el uso de Gemfile:
gem ''pg'', ''0.16.0''
luego ejecuta lo siguiente para actualizar la gema
bundle install --without production
bundle update
bundle install
gem uninstall pg
En OS X con Homebrew:
gem install pg -- --with-pg-config=/usr/local/bin/pg_config