Cada vez que ejecuto mi servidor rails 4.0, obtengo este resultado.
Started GET "/" for 127.0.0.1 at 2013-11-06 23:56:36 -0500
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?
:
activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `connect'
activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:542:in `initialize'
activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `postgresql_connection'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:440:in `new_connection'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:450:in `checkout_new_connection'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `acquire_connection'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:356:in `block in checkout'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `checkout'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block in connection'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:264:in `connection'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:546:in `retrieve_connection'
activerecord (4.0.0) lib/active_record/connection_handling.rb:79:in `retrieve_connection'
activerecord (4.0.0) lib/active_record/connection_handling.rb:53:in `connection'
activerecord (4.0.0) lib/active_record/migration.rb:792:in `current_version'
activerecord (4.0.0) lib/active_record/migration.rb:800:in `needs_migration?'
activerecord (4.0.0) lib/active_record/migration.rb:379:in `check_pending!'
activerecord (4.0.0) lib/active_record/migration.rb:366:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__1613334440513032208__call__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
better_errors (0.9.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
better_errors (0.9.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
better_errors (0.9.0) lib/better_errors/middleware.rb:56:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
quiet_assets (1.0.2) lib/quiet_assets.rb:18:in `call_with_quiet_assets'
actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
railties (4.0.0) lib/rails/engine.rb:511:in `call'
railties (4.0.0) lib/rails/application.rb:97:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
thin (1.5.1) lib/thin/connection.rb:81:in `block in pre_process'
thin (1.5.1) lib/thin/connection.rb:79:in `pre_process'
thin (1.5.1) lib/thin/connection.rb:54:in `process'
thin (1.5.1) lib/thin/connection.rb:39:in `receive_data'
eventmachine (1.0.3) lib/eventmachine.rb:187:in `run'
thin (1.5.1) lib/thin/backends/base.rb:63:in `start'
thin (1.5.1) lib/thin/server.rb:159:in `start'
rack (1.5.2) lib/rack/handler/thin.rb:16:in `run'
rack (1.5.2) lib/rack/server.rb:264:in `start'
railties (4.0.0) lib/rails/commands/server.rb:84:in `start'
railties (4.0.0) lib/rails/commands.rb:78:in `block in <top (required)>'
railties (4.0.0) lib/rails/commands.rb:73:in `<top (required)>'
bin/rails:4:in `<main>'
Estoy ejecutando Mavericks OS X 10.9, así que no sé si ese es el problema. He intentado todo lo que pude pero nada parece funcionar. He desinstalado e instalado tanto Postgres como la gema pg varias veces ahora.
Este es mi archivo database.yml
development:
adapter: postgresql
encoding: unicode
database: metals-directory_development
pool: 5
username:
password:
template: template0
host: localhost
port: 5432
test: &test
adapter: postgresql
encoding: unicode
database: metals-directory_test
pool: 5
username:
password:
template: template0
host: localhost
port: 5432
staging:
adapter: postgresql
encoding: unicode
database: metals-directory_production
pool: 5
username:
password:
template: template0
host: localhost
production:
adapter: postgresql
encoding: unicode
database: metals-directory_production
pool: 5
username:
password:
template: template0
host: localhost
cucumber:
<<: *test
ruby-on-rails
ruby
ruby-on-rails-4
database-connection
pg
fadelakin
fuente
fuente
Respuestas:
Podría ser tan simple como un archivo PID obsoleto . Podría estar fallando en silencio porque su computadora no completó el proceso de apagado por completo, lo que significa que postgres no eliminó el archivo PID (identificación del proceso).
Postgres utiliza el archivo PID para asegurarse de que solo se ejecute una instancia del servidor a la vez. Entonces, cuando va a comenzar de nuevo, falla porque ya hay un archivo PID que le dice a postgres que se inició otra instancia del servidor (aunque no se está ejecutando, simplemente no pudo apagar y eliminar el PID) .
/usr/local/var/postgres/
, u/usr/local/var/log/
otros sistemas que podría ser/usr/var/postgres/
.server.log
). En las últimas líneas verás:rm postmaster.pid
Reinicia tu servidor. En una Mac que usa launchctl (con homebrew), los siguientes comandos reiniciarán el servidor.
O en versiones más recientes de Brew
fuente
FATAL: could not open directory "pg_tblspc": No such file or directory
. Esta respuesta me ayudó con ese problema stackoverflow.com/questions/25970132/…gem uninstall pg
), desinstalé postgres (brew uninstall postgres
), luego eliminé la carpeta de postgres que permanecía con un montón de cosas obsoletas en (rm -rf /usr/local/var/postgres
). Después de un reiniciobrew install postgres
,ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
,launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
, yARCHFLAGS="-arch x86_64" gem install pg
. No sé cuántas otras soluciones probé antes de que esto funcione.brew services restart postgresql
/usr/local/var/log/postgres.log
Después de mucha búsqueda y análisis, encontré una solución si está usando ubuntu, simplemente escriba este comando en su terminal y presione enter
Esto reiniciará su PostgreSQL, espero que esto sea útil para usted.
fuente
Este problema surge cuando postgres no se cierra correctamente. Así es como resolví este problema en tres simples pasos.
Paso 1: ve a tu directorio de postgres
Los usuarios de Mac encontrarán esto en
/usr/local/var/postgres
, otros pueden mirar/usr/var/postgres/
.Paso 2: elimine el
.pid
archivo ejecutando este comando.Paso 3: reinicia tu servidor
Usuarios de Mac
Usuarios de Linux
Finalmente reinicie su aplicación y estará listo para comenzar.
fuente
He logrado resolver el problema siguiendo la respuesta de Chris Slade, pero para reiniciar el servidor, tuve que usar los siguientes comandos:
que encontré aquí (la respuesta de pjammer en la parte inferior)
fuente
¿Tiene instalado Postgresql en su sistema? Si no, entonces mira Instalar postgresql . Después de integrar con éxito postgresql en su sistema, puede escribir algo así en el terminal de su sistema:
Después de eso, debe crear un usuario y una base de datos en postgresql como este:
Entonces puedes ver lo siguiente dentro de tu terminal
Escriba allí:
Después de hacer esto, debe corregir su
database.yml
. Probablemente necesites algo así:Además, si tiene problemas con postgresql, es una buena idea consultar pg_hba.conf
fuente
Para solucionar este tipo de problemas con Postgres y trabajar con Postgres en
Mac OSX
, este es probablemente el mejor y el SENCILLA solución que he encontrado hasta ahora:http://postgresapp.com/
Simplemente descargue, instale y sea feliz :)
fuente
Desinstalar pg:
Desinstalar postgres:
Destruye la carpeta postgres que podría estar persistiendo con un montón de cosas obsoletas en ella:
Reiniciar (tal vez innecesario)
Reinstalar pg:
Mi comentario en la respuesta de Chris Slade comienza pg de la manera difícil, ahora uso los servicios de preparación que ha simplificado mi vida de muchas maneras:
Y comience con pg:
Vuelva a instalar la gema:
Y bobsyourclecle.
fuente
lunchy stop postgres
seguido delunchy start postgres
sudo apt purge postgresql
o cualquier otropostgresql
paquete debería ser suficiente y destruirá todo.verifique el archivo postgresql.conf (on
ubuntu
está en /etc/postgresql/XX/main/postgresql.conf ) y busque la línea que dice:intenta cambiarlo a:
sería aceptar cada IP, luego verifique la línea que dice:
y verifique si es el mismo puerto de su base de datos.yml, de manera predeterminada en mi postgresql-9.2 uso 5433 en lugar de 5432 , no olvide reiniciar el servidor postgres,
¡Buena suerte!
fuente
Según lo descrito por @Magne, el error
PG::ConnectionBad - could not connect to server: Connection refused
puede presentarse después de una actualización de versión mayor / menor (por ejemplo,9.5 -> 9.6
o9 -> 10
) de PostgreSQL.Recibí este error después de haberlo ejecutado
brew upgrade postgresql
después del lanzamiento de PostgreSQL versión 9.6. El problema es que las actualizaciones de versiones mayores / menores requieren pasos adicionales para migrar la fecha anterior a la nueva versión.Cómo verificar si este es tu problema
Puede verificar si este es el problema comprobando la última versión de la fórmula de preparación PostgreSQL instalada con homebrew ...
... y luego comparándolo con el PG_VERSION actual
Si PG_VERSION es menor que la última fórmula de preparación y la diferencia es un cambio de versión mayor / menor, entonces este es probablemente su problema.
Cómo solucionarlo (es decir, cómo actualizar los datos)
Las instrucciones a continuación son para una actualización de 9.5 a 9.6. Cambie los números de versión según corresponda para su propia actualización
Paso 1. Asegúrese de que PostgreSQL esté apagado:
Paso 2. Crea una nueva base de datos inmaculada:
Paso 3. Comprueba cuáles son las versiones binarias antiguas y nuevas:
Tenga en cuenta que en este ejemplo estoy actualizando de 9.5.4 binario a 9.6.1 binario
Paso 4. Migre los datos actuales a la nueva base de datos utilizando lautilidad pg_upgrade .
-d
bandera especifica el directorio de datos actual-D
El indicador especifica el nuevo directorio de datos que se creará-b
especifica el viejo binario-B
especifica el nuevo binario al que estamos actualizandoPaso 5. Mueva el antiguo directorio de datos fuera del camino
Paso 6. Mueva el directorio de datos recién creado a donde PostgreSQL espera que esté
Paso 7. Inicie PostgreSQL nuevamente
Paso 8. Si está utilizando la gema pg para Rails, debe volver a compilar desinstalando y reinstalando la gema (omita este paso si no está usando la gema pg)
Paso 9. (opcional) Después de asegurarte de que todo funciona bien, puedes ejecutar recuperar algo de espacio en disco con el siguiente comando:
... y si te sientes realmente valiente puedes eliminar el antiguo directorio de datos de PostgreSQL con el siguiente comando
(Esta respuesta se basa en una excelente publicación de blog https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ con algunas adiciones)
fuente
Esto es lo que realmente me ayudó.
Referencia: http://alumni.lewagon.org/questions/60
fuente
Como se sugirió anteriormente, acabo de abrir la aplicación Postgres en mi Mac, hice clic en Abrir
Psql
, cerré lapsql
ventana, reinicié mi servidor de rieles en mi terminal, y estaba funcionando de nuevo, no más errores.Confía en el elefante: http://postgresapp.com/
fuente
Tengo el mismo problema después de actualizar mi mac en Osx Movaje.
Encontré esta solución:
Pruebe primero la siguiente línea de comando en su terminal:
Si nada cambia:
Si todavía nada cambia:
El último comando para solucionarlo eliminó el archivo de bloqueo de Postgres al ejecutar desde la raíz:
y entonces :
Desde berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325
Espero que ayude :)
Saludos !!
fuente
Si encuentra este problema después de hacer una
brew upgrade
actualización de postgres a una nueva versión principal (f.ex9.3.0
a9.4.0
o superior), haga esto:El problema aquí es que en una actualización de versión principal de postgres, es necesario recrear / migrar su base de datos. Y posiblemente
chown
directorios o llamar manualmenteinitdb
.Consulte también: ¿Cómo actualizar PostgreSQL de la versión 9.5 a la versión 9.6 sin perder datos?
Algunos otros consejos, que pueden ser útiles, en caso de que no esté utilizando Homebrew:
Cómo detener el servidor PG manualmente:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log stop
Cómo iniciar el servidor PG manualmente:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
fuente
Localice su archivo postgres en el que podría estar
/usr/local/var/postgres/
o dentro/usr/var/postgres/
y luego elimine elpostmaster.pid
archivo presente en esa carpeta.fuente
poner
host: localhost
en eldatabase.yml
archivo y ejecutar este comando:fuente
Los usuarios de Mac con la aplicación Postgres pueden querer abrir la aplicación (busque Spotgres en Spotlight o encuentre el icono de elefante en su barra de menú). Allí puede ver una X roja con el mensaje: "Archivo postmaster.pid obsoleto". Lamentablemente, una búsqueda destacada no mostrará la ubicación de este archivo. Haga clic en "Configuración del servidor ...", y en el cuadro de diálogo que se abre, haga clic en el botón "Mostrar" para abrir el Directorio de datos. Navegue por una carpeta (para mí era "var-10") y elimine el
postmaster.pid
archivo.Regrese a la aplicación Postgres y haga clic en el botón Inicio. Esa X roja debería convertirse en una marca de verificación verde con el mensaje "Ejecutando". Ahora debería poder ejecutar con éxito los comandos de Rails como
rails server
en la terminal.fuente
Acabo de tener este problema esta noche, trabajando en una aplicación de rieles en la que he estado trabajando durante un tiempo. Mi problema simplemente se redujo al hecho de que mi servidor postgresql no se estaba ejecutando .
Fui a la parte superior de la pantalla (estoy en una Mac) e hice clic en el pequeño icono de elefante y luego en 'Inicio'.
Resulta que el servidor no estaba encendido.
Esperemos que esto proporcione una solución simple para alguien.
fuente
Definitivamente fue la respuesta de @Chris Slade lo que me ayudó.
Escribí un pequeño script para matar los procesos restantes si es útil:
fuente
Tuve el mismo problema en la producción (el desarrollo funcionó todo), en mi caso el servidor DB no está en la misma máquina que la aplicación, así que finalmente lo que funcionó es simplemente migrar escribiendo:
y luego reinicie el servidor y todo funcionó.
fuente
Sé que es tarde pero podría ayudar a alguien. Yo estaba teniendo el mismo problema. Resulta que tenía dos versiones de postgres 9.1 y 9.5. Desinstalé 9.1 y 9.5 e instalé 9.5 nuevamente y funcionó para mí.
fuente
Probablemente reinició su computadora y olvidó iniciar la aplicación Postgres.
fuente
Yo tuve el mismo problema. Compruebo la última línea de
PostgreSQL
archivos de registro/var/log/postgresql
. Hubo un parámetro de configuración no reconocido en el archivo /etc/postgresql/9.5/main/postgresql.conf . Comentando la línea de error enpostgresql.conf
resolvió mi problema.fuente
Mi problema estaba en mi archivo application.yml . Mi base
url
de datosheroku
no estaba usando el puerto 5342. Verifique suheroku
configuraciónvar DATABASE_URL
. Asegúrese de que coincide exactamente con estaba en su application.yml para la base de datos correspondiente.fuente
Tuve el mismo problema, esta explicación lo resolvió para mí: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/
El paso clave fue mirar la cola de mi /usr/local/var/postgres/server.log , eso me permitió ver cuál era el verdadero problema, que era que no había completado completamente el proceso de actualización de PostgreSQL
fuente
server.log
. Encontré mi respuesta aquí: stackoverflow.com/questions/25970132/…Acabo de ejecutar este comando
sudo service postgresql restart
y todo volvió a funcionar.fuente
Detuve el servidor de rieles, corrí
rake db:migrate
y comencé mirails s
.fuente
Me encontré con este error después de seguir una
brew upgrade
actualización de postgresql. Encontré exactamente cómo solucionar mi problema en esta gran publicación. Pude volver a poner en marcha Postgres e incluso migré a todas mis bases de datos existentes. https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgradefuente
Acabo de tener este problema y ninguna de las soluciones sugeridas me funcionó. Después de mucho googlear, encontré una solución. Esto es lo que funcionó para mí.
Primero, tuve que ejecutar este comando para iniciar el servidor y supongo que establecer la ubicación del archivo de configuración.
Luego ejecuté este comando para acceder a postgres
Y en el indicador de postgres escribí "\ du" para enumerar los roles
Faltaba el rol de postgres, así que tuve que crearlo con este comando
Eso resolvió mi problema y espero que esto ayude a alguien más.
fuente
No tiene que eliminar el
postmaster.pid
archivo, ya que esto podría estar invitando a la corrupción de datos.¿Opción? Simplemente
kill
el proceso (no usarkill -9
, solo una matanza ordinaria lo hará).Luego, simplemente reinicie el servidor de Postgres y listo.
Estos son los pasos para lograrlo:
Ubique y abra el
postmaster.pid
archivo (el mío está en Mac Sierra)vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid
Copie el PID: es el número en la primera línea del
postmaster.pid
archivokill PID
, por ejemplo, si mi PID es 381, lo harékill 381
brew services start postgresql
. O si usa postgresapp, simplemente haga clic en elstart
botónfuente
El administrador de paquetes Homebrew incluye listas de inicio para iniciar automáticamente. Para más información ejecutar
brew info postgres
.Comience manualmente:
pg_ctl -D /usr/local/var/postgres start
Parar manualmente:
pg_ctl -D /usr/local/var/postgres stop
Comience automáticamente:
"Para iniciar, inicie postgresql ahora y reinicie al iniciar sesión:"
brew services start postgresql
fuente