PG :: ConnectionBad - impossibile connettersi al server: connessione rifiutata


284

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

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 eseguendo Mavericks OS X 10.9 quindi non so se questo è il problema. Ho provato tutto quello che potevo ma niente sembra funzionare. Ho disinstallato e installato più volte postgres e pg gem più volte.

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

3
prova ad aggiungere "host: localhost" nel tuo database.yml, ottenuto da stackoverflow.com/a/10793186/919641
Surendra Bobba

1
@trajan l'ho già fatto. Ho persino usato quel thread quando ho iniziato a cercare una soluzione. Ho pubblicato il mio file database.yml. Puoi dargli un'occhiata. Forse potrebbe aiutare.
fadelakin

mostra il tuo pg_hba.conf
Pronix

2
Non dimenticare di attivare l'app postgres se la stai utilizzando.
Pavan Katepalli

1
Grazie per avermi ricordato di accendere l'app @PavanKatepalli! Buona chiamata;)
cattura 22

Risposte:


656

Potrebbe essere semplice come un file PID obsoleto . Potrebbe non riuscire silenziosamente perché il tuo computer non ha completato completamente il processo di spegnimento, il che significa che postgres non ha cancellato il file PID (ID processo).

Il file PID viene utilizzato da postgres per assicurarsi che sia in esecuzione solo un'istanza del server alla volta. Quindi, quando si avvia di nuovo, fallisce perché c'è già un file PID che dice a postgres che un'altra istanza del server è stata avviata (anche se non è in esecuzione, semplicemente non è riuscito a chiudere ed eliminare il PID) .

  1. Per risolverlo, rimuovere / rinominare il file PID. Trova la directory dei dati di postgres. Su macOS utilizzando homebrew in cui si trova /usr/local/var/postgres/o /usr/local/var/log/altri sistemi potrebbe essere /usr/var/postgres/.
  2. Per assicurarti che questo sia il problema, guarda il file di registro ( server.log). Nelle ultime righe vedrai:

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

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

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

    OPPURE sulle versioni più recenti di Brew

    brew services restart postgresql
    

24
# 2 è un ottimo suggerimento: "Controlla server.log". Il mio errore è stato effettivamente causato da aggiornamento a Yosemite, il log del server, ha detto: FATAL: could not open directory "pg_tblspc": No such file or directory. Questa risposta mi ha aiutato con quel problema stackoverflow.com/questions/25970132/…
Paul Kaplan

20
Ho appena votato su questo perché mi ha dato abbastanza per risolvere il problema stile terra bruciata. Ho disinstallato pg ( gem uninstall pg), disinstallato postgres ( brew uninstall postgres), quindi ho cancellato la cartella postgres che era rimasta con un mucchio di cose obsolete in ( rm -rf /usr/local/var/postgres). Dopo un riavvio brew install postgres, ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents, launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist, e ARCHFLAGS="-arch x86_64" gem install pg. Non so quante altre soluzioni ho provato prima di farlo funzionare.
IAmNaN

2
il file postmaster.opts è lo stesso del file postmaster.pid?
ARTLoe

31
Per i nuovi utenti di Brew, il comando per # 4 èbrew services restart postgresql
streetlogics

8
Per me (MAC, homebrew) il file di registro era/usr/local/var/log/postgres.log
DZack

48

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

Passaggio 1: vai alla directory di postgres

Gli utenti Mac lo troveranno in /usr/local/var/postgres, altri potrebbero guardarlo /usr/var/postgres/.

Passaggio 2: rimuovere il .pidfile eseguendo questo comando.

rm postmaster.pid

Passaggio 3: riavvia il server

Utenti Mac

brew services restart postgresql

Utenti Linux

sudo service postgresql restart

Finalmente riavvia la tua app e sei a posto.


Il riavvio con brew servicenon ha funzionato per me. Rimuovere il .pidha funzionato! Grazie.
Jan Werkhoven,

44

Dopo molte 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 sia utile.


3
Grazie mille volte. Ho appena aggiornato la mia versione di Ubuntu e questo è stato risolto per me.
Mauricio Moraes

Sebbene la domanda si riferisca a OSX Mavericks, questa definizione è utile per le installazioni di Ubuntu quando accade qualcosa di strano durante la migrazione o l'avvio del server.
Jerome

33

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

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

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

che ho trovato qui (risposta di pjammer in basso)


25

Hai postgresql installato nel tuo sistema? In caso contrario, guarda Install postgresql . Dopo aver integrato con successo 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=#

Digita 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 averlo fatto, devi correggere il tuo file 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


1
L'ho installato ma la posizione è in / usr / local / bin / psql e quando
eseguo

psql dovrebbe funzionare se vuoi usare pg nella tua app. Prova a digitare il terminale psql metals-directory_development. Qualche risultato? In caso contrario, prova a reinstallare postgres, prova ad esempio
Mihail Davydenkov

Quando eseguo psql metals-directory_development ottengo psql: impossibile connettersi al server: nessun file o directory di questo tipo Il server è in esecuzione localmente e accetta connessioni sul socket del dominio Unix "/tmp/.s.PGSQL.5432"? Sono un programmatore di rail principianti e non ho idea di cosa significhi. Ho provato a reinstallare postgres numerose volte ma senza fortuna.
fadelakin

23

Per risolvere questo tipo di problemi con Postgres e di lavorare con Postgres su Mac OSX, questo è probabilmente il migliore e la FACILE soluzione che ho trovato finora:

http://postgresapp.com/

Basta scaricare, installare ed essere felici :)


20
  1. Disinstalla pg:

    gem uninstall pg
  2. Disinstalla postgres:

    brew uninstall postgres
  3. Nuke la cartella postgres che potrebbe persistere con un mucchio di cose stantie in:

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

  5. Reinstallare pg:

    brew install postgres
  6. Il mio commento nella risposta di Chris Slade inizia nel modo più duro, ora uso i servizi di birra che mi hanno semplificato la vita in tanti modi:

    brew install services
  7. E inizia con esso:

    brew services start postgresql
  8. Reinstallare la gemma:

    gem install pg

E bobyouruncle.


3
Fai attenzione con questo metodo ... questo è un approccio di terra bruciata e molto probabilmente distruggerà qualsiasi db locale che hai attualmente. lunchy stop postgreslunchy start postgres
Dai

su ubuntu credo sudo apt purge postgresqlo qualsiasi altro postgresqlpachage dovrebbe bastare e distruggerà tutto.
Fabrizio Bertoglio

L'ho fatto e ora ricevo il seguente errore: postgresql_adapter.rb: 709: in `rescue in connect ': FATAL: il database" project3_development "non esiste (ActiveRecord :: NoDatabaseError). Cosa dovrei fare ? Posso effettivamente vedere il database in rubymine.
Franky Doul

13

controlla il file postgresql.conf ( ubuntuin /etc/postgresql/XX/main/postgresql.conf ) e cerca la riga che dice:

listen_addresses="localhost"

prova a cambiarlo in:

listen_addresses="*"

sarebbe accettare ogni IP, quindi controlla la riga che dice:

port=5432

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

In bocca al lupo!


Questo era anche il mio problema. Ho il sospetto che sia successo perché avevo già 9.3 in esecuzione quando ho provato ad "aggiornare" (cioè installare 9.5). Immagino che stesse cercando di essere educato e di configurarsi per funzionare in parallelo su una porta diversa piuttosto che assumere il controllo dell'installazione / processo esistente.
Joel Fouse

12

Come descritto da @Magne, l'errore PG::ConnectionBad - could not connect to server: Connection refusedpuò essere presentato dopo un aggiornamento della versione principale / secondaria (ad esempio 9.5 -> 9.6o 9 -> 10) di PostgreSQL.

Ho ricevuto questo errore dopo aver eseguito brew upgrade postgresqldopo il rilascio di PostgreSQL versione 9.6. Il problema è che gli aggiornamenti della versione principale / secondaria richiedono passaggi aggiuntivi per migrare la vecchia data alla nuova versione.

Come verificare se questo è il tuo problema

Puoi verificare se questo è il problema controllando l'ultima versione di PostgreSQL della formula della birra 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 quindi confrontandolo con l'attuale PG_VERSION

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

Se PG_VERSION è inferiore all'ultima formula di infusione e la differenza è un cambio di versione maggiore / minore, probabilmente questo è il tuo problema.

Come risolvere (ovvero come aggiornare i dati)

Le istruzioni seguenti si riferiscono a un aggiornamento dalla 9.5 alla 9.6. Modificare i numeri di versione in base al proprio aggiornamento

Passaggio 1.Assicurati che PostgreSQL sia disattivato:

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

Passaggio 2. Crea un nuovo database incontaminato:

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

Passaggio 3. Controlla quali sono la vecchia e la nuova versione binaria:

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

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

Passaggio 4. Migrare i dati correnti nel nuovo database utilizzando l'utilità 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 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 fuori mano

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

Passaggio 6. Spostare la directory dei dati appena creata dove 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 pg gem per Rails, dovresti ricompilare disinstallando e reinstallando il gem (salta questo passaggio se non stai usando pg gem)

$ gem uninstall pg
$ gem install pg

Passaggio 9. (facoltativo) Dopo esserti assicurato che tutto funziona correttamente, puoi eseguire il recupero dello spazio su disco con il seguente comando:

brew cleanup postgresql

... e se ti senti davvero coraggioso puoi eliminare 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 del blog https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ con alcune aggiunte)



7

Come suggerito sopra, ho appena aperto l' app Postgres sul mio Mac, ho fatto clic su Apri Psql, ho chiuso la psqlfinestra, riavviato il mio server rails nel mio terminale e funzionava di nuovo, niente più errori.

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


7

Ho avuto lo stesso problema dopo aver aggiornato il mio Mac su Osx Movaje.

ho trovato questa soluzione:

Prova prima la seguente riga di comando nel tuo terminale:

brew services restart postgresql

Se non cambia nulla:

ps aux | grep postgres

Se ancora non cambia nulla:

ls -ls | grep post

Ultimo comando per risolverlo, rimosso il file di blocco di postgres eseguendo da root:

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

e poi :

brew services restart postgresql

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

Spero che questo ti aiuti :)

Saluti !!


5

Se si preme questo problema dopo aver fatto un brew upgradePostgres che aggiornato ad una nuova versione (f.ex 9.3.0a 9.4.0o superiore), quindi fare questo:

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

La guida ufficiale alla migrazione [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 a buon fine, 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 chowndirectory o chiamare manualmente initdb.

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


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

Come arrestare 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

Individua il tuo file postgres in cui potrebbe trovarsi /usr/local/var/postgres/o dentro, /usr/var/postgres/quindi elimina il postmaster.pidfile presente in quella cartella.


3

metti host: localhostin database.ymlfile ed esegui questo comando:

rake db:create db:migrate  

2

Gli utenti Mac con l'app Postgres potrebbero voler aprire l'applicazione (cerca Postgres o trova l'icona dell'elefante nella barra dei menu). Qui potresti vedere una X rossa con il messaggio: "File postmaster.pid non aggiornato". Sfortunatamente una ricerca Spotlight non mostrerà la posizione di questo file. Fare clic su "Impostazioni server ..." e nella finestra di dialogo che si apre, fare clic sul pulsante "Mostra" per aprire la directory dei dati. Naviga in una cartella (per me era "var-10") ed elimina il postmaster.pidfile.

Torna all'app Postgres e fai clic sul pulsante Start. Quella X rossa dovrebbe trasformarsi in un segno di spunta verde con il messaggio "In esecuzione". Ora dovresti essere in grado di eseguire correttamente i comandi di Rails come rails servernel terminale.

Impostazioni server app Postgres - Mostra directory dati


Questo l'ha risolto per me. Grazie mille per la soluzione! È stato un processo!
boyd

2

Ho avuto questo problema stasera, lavorando su un'applicazione rails su cui ho lavorato per un po '. Il mio problema è semplicemente dovuto al fatto che il mio server postgresql non era in esecuzione .

Sono andato nella parte superiore dello schermo (sono su un Mac) e ho fatto clic sull'icona dell'elefantino e ho fatto clic su "Avvia".

Accende il nostro server non era acceso.

Si spera che questo fornisca una soluzione semplice per qualcuno.


1

È stata sicuramente la risposta di @Chris Slade che mi ha aiutato.

Ho scritto un piccolo script per uccidere quei processi rimanenti se utili:

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
}

1

Ho avuto lo stesso problema in produzione (sviluppo tutto ha funzionato), nel mio caso il server DB non è sulla stessa macchina dell'app, quindi alla fine quello che ha funzionato è solo migrare scrivendo:

bundle exec rake db:migrate RAILS_ENV=production

e quindi riavviare il server e tutto ha funzionato.


1

So che è tardi ma potrebbe aiutare qualcuno. Stavo avendo lo stesso problema. Si scopre che avevo due versioni di postgres 9.1 e 9.5. Ho disinstallato 9.1 e 9.5 e installato di nuovo 9.5 e ha funzionato per me.


1

Probabilmente hai riavviato il computer e hai dimenticato di avviare l'app Postgres.


1

Ho avuto lo stesso problema. Controllo l'ultima riga dei PostgreSQLfile di registro /var/log/postgresql. C'era un parametro di configurazione non riconosciuto nel file /etc/postgresql/9.5/main/postgresql.conf . Commentando la riga di errore in postgresql.confrisolto il mio problema.


1

Il mio problema era nel mio file application.yml . Il mio database urlsu herokunon utilizzava la porta 5342. Controlla la tua herokuconfigurazione var DATABASE_URL. Assicurati che corrisponda esattamente a era nel tuo application.yml per il database applicabile.


1

Ho avuto lo stesso problema, questa spiegazione mi ha risolto: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/

il passaggio chiave è stato osservare la coda del mio /usr/local/var/postgres/server.log , che mi ha permesso di vedere qual era il vero problema, ovvero che non avevo completato completamente il processo di aggiornamento di PostgreSQL


Situazione simile qui - la chiave per me era anche guardare server.log. Ho trovato la mia risposta qui: stackoverflow.com/questions/25970132/…
Nathan Wallace

1

Ho appena eseguito questo comando sudo service postgresql restart e tutto ha funzionato di nuovo.


1

Il gestore di pacchetti Homebrew include le plist launchctl per l'avvio automatico. Per ulteriori informazioni corri brew info postgres.

Inizia manualmente:

pg_ctl -D /usr/local/var/postgres start

Interrompi manualmente:

pg_ctl -D /usr/local/var/postgres stop

Avvia automaticamente:

"Per fare in modo che launchd avvii postgresql ora e riavvia al login:"

brew services start postgresql


0

Ho fermato il server rails, ho eseguito rake db:migratee avviato il mio rails s.



0

Ho appena avuto questo problema e nessuna delle soluzioni suggerite ha funzionato per me. Dopo molte ricerche su Google, ho trovato una soluzione. Questo è ciò che ha funzionato per me.

Innanzitutto, ho dovuto eseguire questo comando per avviare il server e immagino di impostare la posizione del file di configurazione.

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

Quindi ho eseguito questo comando per accedere a postgres

psql postgres

E al prompt di postgres ho digitato "\ du" per elencare i ruoli

postgres=# \du

Mancava il ruolo postgres quindi ho dovuto crearlo con questo comando

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

Questo ha risolto il mio problema e spero che questo aiuti qualcun altro.


0

Non è necessario eliminare il postmaster.pidfile, poiché ciò potrebbe favorire il danneggiamento dei dati.

Opzione? Semplicemente killil processo (non usare kill -9, andrà bene solo una normale uccisione).

Quindi riavvia il server postgres e sei a posto!

Ecco i passaggi per ottenerlo:

  1. Individua e apri il postmaster.pidfile (il mio è su Mac Sierra)

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

  2. Copia il PID: è il numero sulla prima riga del postmaster.pidfile

  3. Uccidi il processo con kill PID, ad esempio, se il mio PID è 381, lo faròkill 381
  4. Riavvia Postres - se usi la birra, fallo brew services start postgresql. Oppure, se utilizzi postgresapp, fai semplicemente clic sul startpulsante
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.