ruby on rails - reiniciar - PG:: ConnectionBad-no se pudo conectar al servidor: conexión rechazada
servidor ruby (28)
Desinstalar pg:
gem uninstall pg
Desinstalar postgres:
brew uninstall postgres
Pincha en la carpeta postgres que podría estar persistiendo con un montón de cosas obsoletas en:
rm -rf /usr/local/var/postgres
Reiniciar (tal vez innecesario)
Reinstalar pg:
brew install postgres
Mi comentario en la respuesta de Chris Slade comienza pg por el camino difícil, ahora uso los servicios de brew que han simplificado mi vida de muchas maneras:
brew install services
Y empieza pg con ello:
brew services start postgresql
Vuelva a instalar la gema:
gem install pg
Y bobsyouruncle.
Cada vez que ejecuto mi servidor rieles 4.0, obtengo esta salida.
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 instalé postgres y pg gem varias veces.
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
¿Alguien puede ayudarme?
¿Tiene instalado postgresql dentro de su sistema? Si no, entonces mira Instalar postgresql . Después de integrar con éxito postgresql en su sistema, puede escribir algo así en su terminal de 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, entonces necesita corregir su database.yml
. Probablemente necesitas 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 verificar pg_hba.conf
Acabo de ejecutar este comando sudo service postgresql restart
y todo funcionó de nuevo.
Acabo de tener este problema y ninguna de las soluciones sugeridas funcionó para mí. Después de un montón de 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
El rol de postgres faltaba, 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.
Como lo describe @Magne, el error PG::ConnectionBad - could not connect to server: Connection refused
se puede presentar después de una actualización mayor / menor de la versión (por ejemplo, 9.5 -> 9.6
o 9 -> 10
) de PostgreSQL.
Recibí este error después de haber ejecutado brew upgrade postgresql
después del lanzamiento de PostgreSQL versión 9.6. El problema es que las actualizaciones de la versión principal / secundaria requieren pasos adicionales para migrar la fecha anterior a la nueva versión.
Como comprobar si este es tu problema.
Puede comprobar si este es el problema al verificar la última versión de PostgreSQL de brew formula 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 la PG_VERSION actual
$ cat /usr/local/var/postgres/PG_VERSION
9.5
Si la PG_VERSION es menor que la última fórmula de brew y la diferencia es un cambio de versión mayor / menor, entonces este es probablemente su problema.
Cómo corregir (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úrate de que PostgreSQL esté apagado:
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, with Homebrew...
$ brew services stop postgresql
Paso 2. Haz una nueva base de datos prístina:
$ 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 usando la utilidad 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
flag especifica el nuevo directorio de datos que se creará -
-b
especifica el binario antiguo -
-B
especifica el nuevo binario que estamos actualizando a
Paso 5. Mueva el viejo 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. Inicia PostgreSQL de nuevo.
$ 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ás usando la gema de pg para Rails, debes recompilarla desinstalando y reinstalando la gema (omite este paso si no estás usando la gema de pg)
$ gem uninstall pg
$ gem install pg
Paso 9. (opcional) Una vez que te hayas asegurado de que todo funciona bien, puedes ejecutar un poco de espacio en el disco con el siguiente comando:
brew cleanup postgresql
... y si se siente realmente valiente, puede 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)
Como se sugirió anteriormente, acabo de abrir la aplicación Postgres en mi Mac, Psql
clic en Abrir Psql
, cerré la ventana de psql
, 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/
Definitivamente fue la respuesta de @Chris Slade la que me ayudó.
Escribí un pequeño script para eliminar esos procesos restantes si fuera ú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
}
Después de una gran cantidad de 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á tu PostgreSQL, espero que esto te ayude.
Detuve el servidor de rieles, ejecuté rake db:migrate
y comencé mis rails s
.
Este problema se produce cuando postgres no se cierra correctamente. Aquí es cómo 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 ver en /usr/var/postgres/
.
Paso 2: .pid
archivo .pid
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 reinicia tu aplicación y listo.
Esto es lo que realmente me ayudó.
$ cd /usr/local/var/postgres/
$ rm postmaster.pid
Referencia: http://alumni.lewagon.org/questions/60
Localice su archivo postgres que podría estar en /usr/local/var/postgres/
o en /usr/var/postgres/
y luego elimine el archivo postmaster.pid
presente en esa carpeta.
Logré 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é here (respuesta de pjammer abajo en la parte inferior)
Los usuarios de Mac con la aplicación Postgres pueden querer abrir la aplicación (resalte la búsqueda de Postgres o busque el icono de elefante en la barra de menú). En ella puede ver una X roja con el mensaje: "Stale postmaster.pid file". Desafortunadamente, una búsqueda de Spotlight 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 archivo postmaster.pid
.
Vuelva a la aplicación Postgres y haga clic en el botón Inicio. Esa X roja debe convertirse en una marca de verificación verde con el mensaje "Corriendo". Ahora debería poder ejecutar con éxito los comandos de Rails como el rails server
en el terminal.
Me encontré con este error después de seguir una brew upgrade
en la que se actualizó postgresql. He encontrado exactamente cómo solucionar mi problema de esta gran publicación. Pude hacer que Postgres volviera a funcionar y hasta migrara a todas mis bases de datos existentes. https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgrade
Mi problema estaba en mi archivo application.yml . La url
mi base de datos en heroku
no estaba usando el puerto 5342. Verifique su heroku
config var DATABASE_URL
. Asegúrese de que coincidan exactamente con estaba en su application.yml para la base de datos correspondiente.
No tiene que eliminar el archivo postmaster.pid
, ya que esto podría estar invitando a la corrupción de datos.
¿Opción? Simplemente kill
el proceso (no use kill -9
, solo lo hará un kill normal).
¡Entonces solo reinicia el servidor de Postgres y listo!
Aquí están los pasos para lograrlo:
Localiza y abre el archivo
postmaster.pid
(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 archivo
postmaster.pid
- Matar el proceso con
kill PID
, por ejemplo, si mi PID es 381, harékill 381
- Reinicie Postres: si usa brew, los
brew services start postgresql
. O si usa postgresapp, simplemente haga clic en el botón destart
Para solucionar este tipo de problemas con Postgres y para trabajar con Postgres en Mac OSX
, esta es probablemente la MEJOR y la solución MÁS FÁCIL que he encontrado hasta ahora:
Solo descarga, instala y sé feliz :)
Podría ser tan simple como un archivo PID obsoleto. Podría estar fallando en silencio porque su computadora no completó completamente el proceso de apagado, lo que significa que postgres no eliminó el archivo PID (ID de proceso).
Postgres utiliza el archivo PID para asegurarse de que solo se ejecuta una instancia del servidor a la vez. Entonces, cuando vuelve a comenzar, falla porque ya existe un archivo PID que le dice a postgres que se inició otra instancia del servidor (aunque no se está ejecutando, simplemente no cerró ni eliminó el PID) .
- Para solucionarlo elimina / renombra el archivo PID. Encuentra el directorio de datos postgres. En un MAC que utiliza homebrew es
/usr/local/var/postgres/
, otros sistemas puede ser/usr/var/postgres/
. - Para asegurarse de que este sea el problema, consulte el archivo de registro (
server.log
). En las últimas líneas verá:
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"?
- Si es así,
rm postmaster.pid
Reinicie su servidor. En una mac que utiliza 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 nuevas versiones de Brew
brew services restart postgresql
Probablemente reinició su computadora y se olvidó de iniciar la aplicación Postgres.
Sé que esto 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í.
Si encuentra este problema después de realizar una brew upgrade
que actualizó postgres a una nueva versión principal (por ejemplo, 9.3.0
a 9.4.0
o superior), haga esto:
La solución de @ dmitrygusev de https://github.com/Homebrew/homebrew/issues/35240
La siguiente guía de migración oficial [Postgresql] ayudó a:
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. Compruebe si la importación fue 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 importante de la versión de postgres, es necesario recrear / migrar su base de datos. Y posiblemente directorios chown
o manualmente llamar a initdb
.
Vea 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és usando 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
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 no cambia nada:
ls -ls | grep post
El último comando para solucionarlo, eliminó el archivo de bloqueo postgres ejecutando desde la raíz:
rm /usr/local/var/postgres/postmaster.pid
y entonces :
brew services restart postgresql
De berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325
Espero que te ayude :)
Saludos !!
Tuve el mismo problema en producción (todo funcionó en desarrollo), en mi caso, el servidor DB no está en la misma máquina que la aplicación, por lo que finalmente lo que funcionó fue migrar por escrito:
bundle exec rake db:migrate RAILS_ENV=production
y luego reiniciar el servidor y todo funcionó.
Tuve el mismo problema, esta explicación me lo resolvió: 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 , que me permitió ver cuál era el problema real, que era que no había completado completamente el proceso de actualización de PostgreSQL
Yo tuve el mismo problema. I Verifique la última línea de los archivos de registro de PostgreSQL
en /var/log/postgresql
. Hubo un parámetro de configuración no reconocido en el archivo /etc/postgresql/9.5/main/postgresql.conf . Comentar la línea de error en postgresql.conf
resolvió mi problema.
coloque el host: localhost
en el archivo database.yml
y ejecute este comando:
rake db:create db:migrate
verifique el archivo postgresql.conf (en ubuntu
está en /etc/postgresql/XX/main/postgresql.conf ) y busque la línea que dice:
listen_addresses="localhost"
intente cambiarlo a:
listen_addresses="*"
estaría aceptando cada IP, luego verifique la línea que dice:
port=5432
y verifique si es el mismo puerto de su database.yml, de manera predeterminada en mi postgresql-9.2 use 5433 en lugar de 5432 , no olvide reiniciar el servidor de postgres,
¡Buena suerte!