Domanda PG :: ConnectionBad - impossibile connettersi al server: Connessione rifiutata


Ogni volta che eseguo il mio server rails 4.0, ottengo questo risultato.

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>'

Sto usando Mavericks OS X 10.9 quindi non so se questo è il problema. Ho provato tutto ciò che potevo, ma niente sembra funzionare. Ho disinstallato e installato sia postgres che il pg gem più volte ora.

Questo è il mio file 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

Qualcuno può aiutarmi?


207
2017-11-07 05:06


origine


risposte:


Potrebbe essere semplice come una stantio File PID. Potrebbe fallire silenziosamente perché il tuo computer non ha completato completamente il processo di spegnimento, il che significa Postgres non ha eliminato il PID (id processo).

Il file PID viene utilizzato da postgres per assicurarsi che sia in esecuzione una sola istanza del server alla volta. Quindi, quando va a ricominciare, fallisce perché c'è già un PID file che dice Postgres che è stata avviata un'altra istanza del server (anche se non è in esecuzione, non è stato possibile arrestare ed eliminare il PID).

  1. Per risolvere il problema rimuovere / rinominare il file PID. Trova la directory dei dati di Postgres. Su un MAC usando homebrew lo è /usr/local/var/postgres/, altri sistemi potrebbe essere /usr/var/postgres/.
  2. Per assicurarsi che questo sia il problema, guarda il file di log (server.log). Sulle ultime righe vedrai:

FATAL: il file di blocco "postmaster.pid" esiste già
  SUGGERIMENTO: un altro postmaster (PID 347) è in esecuzione nella directory dei dati "/ usr / local / var / postgres"?

  1. Se è così, rm postmaster.pid
  2. Riavvia il tuo server. Su un Mac usando launchctl (con homebrew) i seguenti comandi riavvieranno il server.

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

    O su versioni più recenti di infuso 

    brew services restart postgresql
    

513
2018-01-29 02:05



Dopo un sacco di ricerche e analisi, ho trovato una soluzione se stai usando Ubuntu, scrivi questo comando nel tuo terminale e premi invio

sudo service postgresql restart

Questo riavvierà il tuo PostgreSQL, spero che questo ti sarà utile.


34
2018-02-08 12:03



Sono riuscito a risolvere il problema seguendo la risposta di Chris Slade, ma per riavviare il server, ho dovuto usare i seguenti comandi:

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

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

che ho trovato Qui (la risposta di pjammer in basso)


32
2017-07-06 07:35



Per risolvere questo tipo di problemi con Postgres e con cui lavorare Postgres sopra Mac OSX, questo è probabilmente il MIGLIORE e il FACILE soluzione che ho trovato finora:

http://postgresapp.com/

Basta scaricare, installare ed essere felice :)


23
2017-08-11 22:17



Hai postgresql installato nel tuo sistema? In caso contrario, quindi guarda Installa postgresql. Dopo aver completato l'integrazione PostgreSQL nel tuo sistema puoi digitare qualcosa del genere nel tuo terminale di sistema:

which psql
#=> /usr/bin/psql

Dopodiché è necessario creare un utente e un database in postgresql in questo modo:

sudo su - postgres
psql

Quindi puoi vedere quanto segue all'interno del tuo terminale

postgres=#

Scrivi lì:

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

Dopo aver fatto questo, quindi è necessario correggere il tuo database.yml. Probabilmente hai bisogno di qualcosa del genere:

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

Inoltre se hai problemi con postgresql è una buona idea controllare pg_hba.conf


21
2017-11-07 06:45



Questo problema si verifica quando Postgres non si spegne correttamente. Ecco come ho risolto questo problema in tre semplici passaggi.

Passo 1: Vai alla tua directory postgres

Utenti Mac troverà questo in /usr/local/var/postgres, altri potrebbero guardare /usr/var/postgres/.

Passo 2: Rimuovere .pid file eseguendo questo comando.

rm postmaster.pid

Passaggio 3: Riavvia il tuo server

Utenti Mac

brew services restart postgresql

Utenti Linux

sudo service postgresql restart

Finalmente riavvia la tua app e sei a posto.


12
2017-08-10 07:35



  1. Disinstallare pg:

    gem uninstall pg
  2. Disinstallare postgres:

    brew uninstall postgres
  3. Nuke la cartella postgres che potrebbe persistere con un po 'di roba stantia in:

    rm -rf /usr/local/var/postgres
  4. Riavvio (forse non necessario)

  5. Reinstallare pg:

    brew install postgres
  6. Il mio commento nella risposta di Chris Slade inizia a pazzo, ora utilizzo i servizi di brew che mi hanno semplificato la vita in tanti modi:

    brew install services
  7. E inizia con questo:

    brew services start postgresql
  8. Reinstallare la gemma:

    gem install pg

E bobsyouruncle.


12
2018-01-08 20:37



controlla il file postgresql.conf (sopra ubuntu è in /etc/postgresql/X.X/main/postgresql.conf ) e cerca la riga che dice:

listen_addresses="localhost"

prova a cambiarlo in:

listen_addresses="*"

accetterebbe tutti gli IP, quindi controlla la riga che dice:

port=5432

e controlla se è la stessa porta del tuo database.yml, per impostazione predefinita sul mio uso postgresql-9.2 5433 anziché 5432, non dimenticare di ricomincia il server postgres,

In bocca al lupo!


12
2018-02-05 10:45



Come descritto da @Magne, l'errore PG::ConnectionBad - could not connect to server: Connection refused può essere presentato seguendo a versione maggiore / minore aggiornamento (ad es. 9.5 -> 9.6 o 9 -> 10) di PostgreSQL.

Ho ricevuto questo errore dopo aver eseguito brew upgrade postgresql dopo il rilascio di PostgreSQL versione 9.6. Il problema è che gli aggiornamenti delle versioni major / secondarie richiedono passaggi aggiuntivi per migrare la vecchia data alla nuova versione.

Come verificare se questo è il tuo problema

È possibile verificare se questo è il problema controllando l'ultima versione di PostgreSQL di brew installata 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

... e poi confrontandolo con l'attuale PG_VERSION

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

Se PG_VERSION è inferiore all'ultima formula di fermentazione e la differenza è una modifica di versione maggiore / minore, probabilmente questo è il tuo problema.

Come risolvere (ad esempio come aggiornare i dati)

Le istruzioni di seguito sono per un aggiornamento da 9,5 a 9,6. Modificare i numeri di versione come appropriato per il proprio aggiornamento

Passo 1. Assicurati che PostgreSQL sia spento:

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

Passo 2. Crea un nuovo database pristine:

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

Passaggio 3. Verifica quali sono le versioni binarie vecchie e nuove:

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

Si noti che in questo esempio sto aggiornando da binario 9.5.4 a binario 9.6.1

Passaggio 4. Migrare i dati correnti al nuovo database usando il pg_upgrade utilità.

$ 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 flag specifica la directory dei dati corrente
  • -D flag specifica la nuova directory di dati da creare
  • -b specifica il vecchio binario
  • -B specifica il nuovo binario a cui stiamo aggiornando

Passaggio 5. Spostare la vecchia directory dei dati

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

Passaggio 6. Sposta la directory dei dati appena creata nella posizione in cui PostgreSQL si aspetta che sia

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

Passaggio 7. Avvia di nuovo PostgreSQL

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

Passaggio 8. Se stai usando la gemma pg per Rails, dovresti ricompilare disinstallando e reinstallando la gemma (salta questo passaggio se non stai usando la gemma pg)

$ gem uninstall pg
$ gem install pg

Passaggio 9. (facoltativo) Dopo che ti sei rassicurato che tutto funziona correttamente, puoi eseguire di nuovo lo spazio su disco con il seguente comando:

brew cleanup postgresql

... e se ti senti davvero coraggioso puoi cancellare la vecchia directory dei dati di PostgreSQL con il seguente comando

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

(Questa risposta si basa su un eccellente post sul blog https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ con alcune aggiunte)


9
2018-02-08 13:12



Come suggerito sopra, ho appena aperto il Postgres App sul mio Mac, ho fatto clic su Apri Psql, chiuso il psql finestra, riavviato il mio rails server nel mio terminale, e stava funzionando di nuovo, non c'è più errore.

Fidati dell'elefante: http://postgresapp.com/


7
2018-01-03 03:39



Se riscontri questo problema dopo aver fatto un brew upgrade che ha aggiornato Postgres in una nuova versione principale (es 9.3.0 a 9.4.0 o superiore), quindi fare questo:

@ Difficoltà di dmitrygusev da https://github.com/Homebrew/homebrew/issues/35240

La seguente guida alla migrazione ufficiale [Postgresql] ha aiutato:

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

È tutto. Controlla se l'importazione è andata bene, quindi elimina i backup:

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

Il problema qui è che su un aggiornamento della versione principale di Postgres, è necessario ricreare / migrare il database. E possibilmente chown directory o chiamate manualmente initdb.

Guarda anche: Come aggiornare PostgreSQL dalla versione 9.5 alla versione 9.6 senza perdere i dati?


Alcuni altri suggerimenti, che potrebbero tornare utili, nel caso in cui non si utilizzi Homebrew:

Come fermare manualmente il server PG:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log stop

Come avviare manualmente il server PG:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start


4
2017-07-19 07:31