PG :: ConnectionBad - no se pudo conectar al servidor: conexión rechazada

271

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
fadelakin
fuente
2
intente agregar 'host: localhost' en su database.yml, obtuve esto de stackoverflow.com/a/10793186/919641
Surendra Bobba el
1
@trajan Ya hice eso. Incluso usé ese hilo cuando comencé a buscar una solución. He publicado mi archivo database.yml. Puedes echarle un vistazo. Quizás pueda ayudar.
fadelakin
muestra tu pg_hba.conf
Pronix
2
No olvides activar la aplicación postgres si la estás usando.
Pavan Katepalli
1
¡Gracias por recordarme que encienda la aplicación @PavanKatepalli! Buena llamada;)
catch22

Respuestas:

638

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) .

  1. Para solucionarlo, elimine / cambie el nombre del archivo PID. Encuentra el directorio de datos de postgres. En macOS usando homebrew está en /usr/local/var/postgres/, u /usr/local/var/log/otros sistemas que podría ser /usr/var/postgres/.
  2. Para asegurarse de que este sea el problema, mire el archivo de registro ( server.log). En las últimas líneas verás:

FATAL: el archivo de bloqueo "postmaster.pid" ya existe.
SUGERENCIA: ¿Se está ejecutando otro postmaster (PID 347) en el directorio de datos "/ usr / local / var / postgres"?

  1. Si es así, rm postmaster.pid
  2. Reinicia tu servidor. En una Mac que usa launchctl (con homebrew), los siguientes comandos reiniciarán el servidor.

    launchctl unload homebrew.mxcl.postgresql.plist  
    launchctl load -w homebrew.mxcl.postgresql.plist
    

    O en versiones más recientes de Brew

    brew services restart postgresql
Chris Slade
fuente
24
# 2 es una gran sugerencia: "Verifique server.log". Mi error fue causado realmente por la actualización a Yosemite, el registro del servidor dijo: FATAL: could not open directory "pg_tblspc": No such file or directory. Esta respuesta me ayudó con ese problema stackoverflow.com/questions/25970132/…
Paul Kaplan
20
Acabo de votar esto porque me dio suficiente para solucionar el problema del estilo de tierra quemada. Desinstalé pg ( 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 reinicio brew install postgres, ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents, launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist, y ARCHFLAGS="-arch x86_64" gem install pg. No sé cuántas otras soluciones probé antes de que esto funcione.
IAmNaN
2
¿es el archivo postmaster.opts lo mismo que el archivo postmaster.pid?
ARTLoe
31
Para los nuevos usuarios de Brew, el comando para el n. ° 4 esbrew services restart postgresql
streetlogics
77
Para mí (MAC, homebrew) el archivo de registro fue/usr/local/var/log/postgres.log
DZack
44

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

sudo service postgresql restart

Esto reiniciará su PostgreSQL, espero que esto sea útil para usted.

Jai Kumar Rajput
fuente
3
Gracias 1000 veces. Acabo de actualizar mi versión de ubuntu y esto me solucionó.
Mauricio Moraes
Aunque la pregunta se refiere a OSX Mavericks, esta solución es útil para las instalaciones de Ubuntu cuando ocurre algo peculiar en la migración o el inicio del servidor.
Jerome
39

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 .pidarchivo ejecutando este comando.

rm postmaster.pid

Paso 3: reinicia tu servidor

Usuarios de Mac

brew services restart postgresql

Usuarios de Linux

sudo service postgresql restart

Finalmente reinicie su aplicación y estará listo para comenzar.

sueños tecnológicos
fuente
33

He logrado resolver el problema siguiendo la respuesta de Chris Slade, pero para reiniciar el servidor, tuve que usar los siguientes comandos:

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

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

que encontré aquí (la respuesta de pjammer en la parte inferior)

Andrea Gherardi
fuente
25

¿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:

which psql
#=> /usr/bin/psql

Después de eso, debe crear un usuario y una base de datos en postgresql como este:

sudo su - postgres
psql

Entonces puedes ver lo siguiente dentro de tu terminal

postgres=#

Escriba allí:

CREATE USER yourname WITH PASSWORD 'passwordhere';
CREATE DATABASE metals-directory_production  WITH OWNER yourname;
GRANT ALL PRIVILEGES ON DATABASE metals-directory_production TO yourname;

Después de hacer esto, debe corregir su database.yml. Probablemente necesites algo así:

development:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_development
  pool: 5
  username: yourname
  password: passwordhere   ### password you have specified within psql
  host: localhost
  port: 5432               ### you can configure it in file postgresql.conf

Además, si tiene problemas con postgresql, es una buena idea consultar pg_hba.conf

Mihail Davydenkov
fuente
1
Lo tengo instalado pero la ubicación está en / usr / local / bin / psql y cuando ejecuto sudo -u postgres dice sudo: usuario desconocido: postgres
fadelakin
psql debería funcionar si quieres usar pg en tu aplicación. Intente escribir en el terminal psql metals-directory_development. Cualquier resultado? Si no es así, intente reinstalar postgres, intente esto, por ejemplo
Mihail Davydenkov el
Cuando ejecuto psql metals-directory_development obtengo psql: no se pudo conectar al servidor: No existe tal archivo o directorio ¿El servidor se ejecuta localmente y acepta conexiones en el socket de dominio Unix "/tmp/.s.PGSQL.5432"? Soy un programador principiante de rieles y no tengo idea de lo que eso significa. He intentado reinstalar postgres varias veces, pero no tuve suerte.
fadelakin
23

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 :)

KM Rakibul Islam
fuente
19
  1. Desinstalar pg:

    gem uninstall pg
  2. Desinstalar postgres:

    brew uninstall postgres
  3. Destruye la carpeta postgres que podría estar persistiendo con un montón de cosas obsoletas en ella:

    rm -rf /usr/local/var/postgres
  4. Reiniciar (tal vez innecesario)

  5. Reinstalar pg:

    brew install postgres
  6. 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:

    brew install services
  7. Y comience con pg:

    brew services start postgresql
  8. Vuelva a instalar la gema:

    gem install pg

Y bobsyourclecle.

IAmNaN
fuente
3
Tenga cuidado con este método ... este es un enfoque de tierra quemada y probablemente destruirá cualquier dbs local que tenga actualmente. Echar un vistazo a github.com/copiousfreetime/launchy en la que podría ser capaz de hacerlo lunchy stop postgresseguido delunchy start postgres
lacostenycoder
en ubuntu, creo, sudo apt purge postgresqlo cualquier otro postgresqlpaquete debería ser suficiente y destruirá todo.
Fabrizio Bertoglio
Hice esto y ahora aparece el siguiente error: postgresql_adapter.rb: 709: en `rescue in connect ': FATAL: la base de datos" project3_development "no existe (ActiveRecord :: NoDatabaseError). Qué tengo que hacer ? De hecho, puedo ver la base de datos en rubymine.
Franky Doul
13

verifique el archivo postgresql.conf (on ubuntuestá en /etc/postgresql/XX/main/postgresql.conf ) y busque la línea que dice:

listen_addresses="localhost"

intenta cambiarlo a:

listen_addresses="*"

sería aceptar cada IP, luego verifique la línea que dice:

port=5432

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!

Alexis
fuente
Este fue mi problema también. Sospecho que sucedió porque ya tenía 9.3 ejecutándose cuando intenté "actualizar" (es decir, instalar 9.5). Supongo que estaba tratando de ser cortés y configurarse para ejecutarse en paralelo en un puerto diferente en lugar de hacerse cargo de la instalación / proceso existente.
Joel Fouse
12

Según lo descrito por @Magne, el error PG::ConnectionBad - could not connect to server: Connection refusedpuede presentarse después de una actualización de versión mayor / menor (por ejemplo, 9.5 -> 9.6o 9 -> 10) de PostgreSQL.

Recibí este error después de haberlo ejecutado brew upgrade postgresqldespué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 ...

$ brew info postgresql

/usr/local/Cellar/postgresql/9.5.4_1 (3,147 files, 35M)
Poured from bottle on 2016-10-14 at 13:33:28
/usr/local/Cellar/postgresql/9.6.1 (3,242 files, 36.4M) *
Poured from bottle on 2017-02-06 at 12:41:00

... y luego comparándolo con el PG_VERSION actual

$ cat /usr/local/var/postgres/PG_VERSION
9.5

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:

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, with Homebrew...
$ brew services stop postgresql

Paso 2. Crea una nueva base de datos inmaculada:

$ initdb /usr/local/var/postgres9.6 -E utf8

Paso 3. Comprueba cuáles son las versiones binarias antiguas y nuevas:

$ ls /usr/local/Cellar/postgresql/
9.5.3   9.5.4   9.6.1

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 .

$ pg_upgrade \
  -d /usr/local/var/postgres \
  -D /usr/local/var/postgres9.6 \
  -b /usr/local/Cellar/postgresql/9.5.4/bin/ \
  -B /usr/local/Cellar/postgresql/9.6.1/bin/ \
  -v
  • -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 actualizando

Paso 5. Mueva el antiguo directorio de datos fuera del camino

$ mv /usr/local/var/postgres /usr/local/var/postgres9.5

Paso 6. Mueva el directorio de datos recién creado a donde PostgreSQL espera que esté

$ mv /usr/local/var/postgres9.6 /usr/local/var/postgres

Paso 7. Inicie PostgreSQL nuevamente

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, if you're running a current version of Homebrew
$ brew services start postgresql

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)

$ gem uninstall pg
$ gem install 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:

brew cleanup postgresql

... y si te sientes realmente valiente puedes eliminar el antiguo directorio de datos de PostgreSQL con el siguiente comando

rm -rf /usr/local/var/postgres9.5/

(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)

Neil Atkinson
fuente
7

Como se sugirió anteriormente, acabo de abrir la aplicación Postgres en mi Mac, hice clic en Abrir Psql, cerré la psqlventana, 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/

houstongolden
fuente
6

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:

brew services restart postgresql

Si nada cambia:

ps aux | grep postgres

Si todavía nada cambia:

ls -ls | grep post

El último comando para solucionarlo eliminó el archivo de bloqueo de Postgres al ejecutar desde la raíz:

rm /usr/local/var/postgres/postmaster.pid

y entonces :

brew services restart postgresql

Desde berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325

Espero que ayude :)

Saludos !!

Basilea
fuente
5

Si encuentra este problema después de hacer una brew upgradeactualización de postgres a una nueva versión principal (f.ex 9.3.0a 9.4.0o superior), haga esto:

Corrección de @ dmitrygusev de https://github.com/Homebrew/homebrew/issues/35240

La siguiente guía oficial de migración [Postgresql] ayudó:

brew switch postgres 9.3.5    # presuming you already installed 9.4.1
pg_dumpall > outputfile
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
mv /usr/local/var/postgres /usr/local/var/postgres.old
brew switch postgres 9.4.1
initdb -D /usr/local/var/postgres
psql -d postgres -f outputfile

Eso es todo. Verifique si la importación salió bien, luego elimine las copias de seguridad

rm outputfile
rm -Rf /usr/local/var/postgres.old

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 chowndirectorios o llamar manualmente initdb.

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

Magne
fuente
4

Localice su archivo postgres en el que podría estar /usr/local/var/postgres/o dentro /usr/var/postgres/y luego elimine el postmaster.pidarchivo presente en esa carpeta.

Awais Shafqat
fuente
3

poner host: localhosten el database.ymlarchivo y ejecutar este comando:

rake db:create db:migrate  
Abel
fuente
2

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.pidarchivo.

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 serveren la terminal.

Configuración del servidor de aplicaciones de Postgres - Mostrar directorio de datos

Quimturion
fuente
Esto lo resolvió para mí. ¡Muchas gracias por la solución! Fue un proceso!
Boyd
2

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.

solidstatejake
fuente
1

Definitivamente fue la respuesta de @Chris Slade lo que me ayudó.

Escribí un pequeño script para matar los procesos restantes si es útil:

kill_postgres() {
  if [[ $* -eq "" ]]; then
    echo "Usage: 'kill_postgres <db_name>' to kill remaining instances (Eg. 'kill_postgres my_app_development')"
  else
    gksudo echo "Granted sudo"
    pids="$(ps xa | grep postgres | grep $* | awk '{print $1}' | xargs)"
    if [[ $pids -eq "" ]]; then
      echo "Nothing to kill"
    else
      for pid in "${pids[@]}"
      do
        echo "Killing ${pid}"
        sudo kill $pid
        echo "Killed ${pid}"
      done
      kill_postgres $*
    fi
  fi
}
Augustin Riedinger
fuente
1

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:

bundle exec rake db:migrate RAILS_ENV=production

y luego reinicie el servidor y todo funcionó.

leah
fuente
1

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í.

Darshan Chauhan
fuente
1

Probablemente reinició su computadora y olvidó iniciar la aplicación Postgres.

The Whiz of Oz
fuente
1

Yo tuve el mismo problema. Compruebo la última línea de PostgreSQLarchivos 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 en postgresql.confresolvió mi problema.

Hajar Homayouni
fuente
1

Mi problema estaba en mi archivo application.yml . Mi base urlde datos herokuno estaba usando el puerto 5342. Verifique su herokuconfiguración var DATABASE_URL. Asegúrese de que coincide exactamente con estaba en su application.yml para la base de datos correspondiente.

NickDK
fuente
1

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

Ben Wheeler
fuente
Situación similar aquí: la clave para mí también fue mirar server.log. Encontré mi respuesta aquí: stackoverflow.com/questions/25970132/…
Nathan Wallace
1

Acabo de ejecutar este comando sudo service postgresql restart y todo volvió a funcionar.

kalibbala
fuente
0

Detuve el servidor de rieles, corrí rake db:migratey comencé mi rails s.

thedanotto
fuente
0

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.

pg_ctl -D /usr/local/var/postgres start && brew services start postgresql

Luego ejecuté este comando para acceder a postgres

psql postgres

Y en el indicador de postgres escribí "\ du" para enumerar los roles

postgres=# \du

Faltaba el rol de postgres, así que tuve que crearlo con este comando

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

Eso resolvió mi problema y espero que esto ayude a alguien más.

luis.madrigal
fuente
0

No tiene que eliminar el postmaster.pidarchivo, ya que esto podría estar invitando a la corrupción de datos.

¿Opción? Simplemente killel proceso (no usar kill -9, solo una matanza ordinaria lo hará).

Luego, simplemente reinicie el servidor de Postgres y listo.

Estos son los pasos para lograrlo:

  1. Ubique y abra el postmaster.pidarchivo (el mío está en Mac Sierra)

    vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid

  2. Copie el PID: es el número en la primera línea del postmaster.pidarchivo

  3. Matar el proceso con kill PID, por ejemplo, si mi PID es 381, lo harékill 381
  4. Reinicie Postres: si usa cerveza, hágalo brew services start postgresql. O si usa postgresapp, simplemente haga clic en el startbotón
Ruto Collins
fuente
0

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

usuario3402754
fuente