Postgres non è riuscito a connettersi al server


416

Dopo aver effettuato l'aggiornamento e la preparazione, i miei postgres hanno avuto qualche problema. Ho provato a disinstallare Postgres e installarlo di nuovo, ma non ha funzionato altrettanto bene.

Questo è il messaggio di errore. (Ho anche ricevuto questo messaggio di errore quando provo a eseguire rake db: migrate)

$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Come posso risolverlo?

Versione per Mac: leone di montagna.

versione homebrew: 0.9.3

versione postgres: psql (PostgreSQL) 9.2.1

E questo è quello che ho fatto.

12:30 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.2.1...
12:31 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.1.4...
12:31 ~/D/works$ psql --version
bash: /usr/local/bin/psql: No such file or directory
12:33 ~/D/works$ brew install postgresql
==> Downloading http://ftp.postgresql.org/pub/source/v9.2.1/postgresql-9.2.1.tar.bz2
Already downloaded: /Library/Caches/Homebrew/postgresql-9.2.1.tar.bz2
......
......
==> Summary
/usr/local/Cellar/postgresql/9.2.1: 2814 files, 38M, built in 2.7 minutes
12:37 ~/D/works$ initdb /usr/local/var/postgres -E utf8
The files belonging to this database system will be owned by user "laigary".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".

initdb: directory "/usr/local/var/postgres" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/usr/local/var/postgres" or run initdb
with an argument other than "/usr/local/var/postgres".
12:39 ~/D/works$ mkdir -p ~/Library/LaunchAgents
12:39 ~/D/works$   cp /usr/local/Cellar/postgresql/9.2.1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
12:39 ~/D/works$   launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
homebrew.mxcl.postgresql: Already loaded
12:39 ~/D/works$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
12:39 ~/D/works$ env ARCHFLAGS="-arch x86_64" gem install pg
Building native extensions.  This could take a while...
Successfully installed pg-0.14.1
1 gem installed
12:42 ~/D/works$ psql --version
psql (PostgreSQL) 9.2.1
12:42 ~/D/works$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Ora, dopo aver reinstallato howbrew, quando lo uso $ psql, non mostra alcun messaggio di errore.

Ma corro rake db:migratenella mia app Rails, mostra:

could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `connect'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:309:in `new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:319:in `checkout_new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:241:in `block (2 levels) in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `loop'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `block in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:233:in `checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:96:in `block in connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:404:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:170:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:144:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:107:in `rescue in create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:51:in `create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (3 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (2 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:63:in `run'
/usr/local/bin/rake:32:in `<main>'
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"riy_development", "pool"=>5, "username"=>nil, "password"=>nil}

Finalmente trovo la soluzione.

$ sudo mkdir /var/pgsql_socket/
$ sudo ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

Questa soluzione è un po 'complicata, ma funziona. Spero che qualcuno abbia una soluzione migliore

Aggiornare

Questo funziona anche per me.

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

3
Sto riscontrando il tuo stesso identico problema, ma la tua soluzione non ha funzionato per me. Penso che questo sia un problema di autorizzazioni, ma non ho la conoscenza delle autorizzazioni dei file per risolverlo.
Ajbraus,

Perché quelli che installano PG tramite Homebrew e hanno problemi, ho trovato un'altra risposta. Basta disinstallare pg gem e reinstallarlo con le configurazioni Homebrew. Vedi la risposta su stackoverflow.com/a/19609228/1072058 .
zquintana,


1
Inizia postgres.
ATW

4
Aggiorna il tuo esistente alla versione più recente con il seguente comando brew postgresql-upgrade-database

Risposte:


800

Ha avuto un problema simile; un file pid stava bloccando l'avvio di postgres. Per risolverlo:

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

e poi va tutto bene.


4
Questo ha funzionato per me su OSX Mavericks dopo aver visto questo problema dopo un aggiornamento / riavvio.
eprothro,

3
@jstafford grazie, ho già risolto! :) La soluzione era disinstallare tramite homebew e quindi riavviare subito il mio computer, quindi avrei potuto reinstallare Postgres. La vecchia versione era in esecuzione in background, creando file e conflitti ogni volta che provavo a reinstallare Postgres.
betoharres,

199
Questo non ha funzionato per me su Mavericks:rm: /usr/local/var/postgres/postmaster.pid: No such file or directory
sscirrus

16
Questo ha funzionato per me, dopo aver cancellato ho dovuto iniziare Postgres. # pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start
Ricardo Castañeda

12
Raccomando di modificare il registro del server per assicurarsi che questo sia effettivamente il problema:tail /usr/local/var/postgres/server.log
Josh Bodah,

255

Questo a volte può essere un problema con un aggiornamento di Postgres.

Nel mio caso, è successo durante l'aggiornamento da 9.3 a 9.4.

Vedi http://www.postgresql.org/docs/9.4/static/upgrading.html

OS X / Homebrew:

Prova a correre postgres -D /usr/local/var/postgres- ti darà un output molto più dettagliato se Postgres non si avvia.

Nel mio caso, l'esecuzione ha rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8rimosso i miei vecchi database e quindi reinizializzato lo schema db postgres.

Grazie a https://github.com/Homebrew/homebrew/issues/35240 per quella soluzione.

Dopo aver rigenerato i miei database (con rake db:create) tutto ha funzionato di nuovo bene.


1
Questo ha funzionato per me con un postgres installato homebrew su Yosemite.
cpursley,

7
Se in esecuzione postgres -D /usr/local/var/postgresti dice che la directory dei dati è stata inizializzata con una versione precedente e incompatibile di Postgres e non vuoi perdere i tuoi dati locali, potresti provare questo thread
Nathan Long

Dopo l'esecuzione del comando sopra, ho eseguito: pg_ctl -D /usr/local/var/postgres -l logfile starte quindi il mio server si è avviato in background
Tommyixi,

5
Usa brew services start postgressu OSX per avviare Postgres in background invece dipostgres -D /usr/local/var/postgres
Mike Andrianov

1
@coffekid Ho avuto lo stesso problema e risolto con le istruzioni qui: stackoverflow.com/questions/24379373/…
Micah Walter,


41

Se l'installazione e la disinstallazione di postgres con brew non funziona per te, dai un'occhiata ai log della tua installazione postgresql o:

postgres -D /usr/local/var/postgres

se vedi questo tipo di output:

LOG:  skipping missing configuration file "/usr/local/var/postgres/postgresql.auto.conf"
FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.4, which is not compatible with this version 9.6.1.

Quindi prova quanto segue:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

Quindi avviare il server:

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

fonte


2
Funziona quando il motivo è diverso dalla risposta accettata, ovvero i file del database non sono compatibili con la versione corrente. Dal momento che esattamente questo è stato il mio problema, ho votato.
Falk Schuetzenmeister,

1
questo comando funziona per me.
Ccr

funziona per Mojave 10.14.6
Sgryt87

34

Su Yosemite, se il file pid blocca l'avvio di Postgres e hai un launchctldemone che tenta (e non riesce) di caricare i demoni del database, dovrai scaricare il file plist:

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

Quindi rimuovere il file pid

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

Quindi ricaricare il launchctldemone

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

28

Per chiunque legga questo e usi Postgres.app, potresti aver bisogno host: localhostnel tuo database.yml. http://postgresapp.com/documentation#toc_3


In questo modo si modifica la connessione da un socket a una connessione TCP che può avere implicazioni negative. Vedi stackoverflow.com/questions/6770649/…
Brett Bim

1
Hmm, in realtà, se decidi di votare ... Forse non dici perché? meta.stackoverflow.com/questions/252297/… O forse dire perché, ma prima disconnettiti in modo da essere anonimo.
David Winiecki,

Penso che il voto negativo sia dovuto al fatto che la domanda originale non era per Postgres.app ma Homebrew. Quindi, sebbene la risposta possa essere utile da qualche parte, non sta rispondendo alla domanda.
Brian Caro,

Il collegamento non sembra andare in nessun luogo specifico (e la ricerca di "localhost" in passato non ha prodotto risultati), ma questo mi ha risolto il problema dopo un'ora di ricerche.
sixty4bit,

25

L'aggiornamento del database funziona per me

brew postgresql-upgrade-database


HanGrazie Tomer! Questo ha funzionato per me l'aggiornamento del 6/2/20 dalle 9.4 alle 12 su macOS Mojave 10.14.6
Rob Bednark il

19
brew services start postgres 

ha funzionato per me!


17

Verificare che il file socket esista.

$ ls -l /tmp/.s.PGSQL.5432
srwxrwxrwx  1 you  wheel  0 Nov 16 09:22 /tmp/.s.PGSQL.5432

In caso contrario, controlla il tuo postgresql.conf per la modifica di unix_socket_directory.

$ grep unix_socket /usr/local/var/postgres/postgresql.conf
#unix_socket_directory = ''     # (change requires restart)
#unix_socket_group = ''         # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation

1
Questa è la mia risposta al computer. $ ls -l /tmp/.s.PGSQL.5432 ls: /tmp/.s.PGSQL.5432: No such file or directory $ grep unix_socket /usr/local/var/postgres/postgresql.conf #unix_socket_directory = '' # (change requires restart) #unix_socket_group = '' # (change requires restart) #unix_socket_permissions = 0777 # begin with 0 to use octal notation
Gary Lai,

29
Finalmente trovo la soluzione. $ mkdir /var/pgsql_socket/ $ sudo mkdir /var/pgsql_socket/ $ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/Questa soluzione è un po 'complicata, ma funziona. Spero che qualcuno abbia una soluzione migliore
Gary Lai,

bel lavoro @GaryLai. Molto strano che non ho dovuto fare lo stesso con il mio postgresql homebrew
jrwren

2
questo può aiutare alcune persone là fuori: github.com/mxcl/homebrew/issues/14527
AdamT

14

Il problema può anche essere attribuito a un processo bloccato che ha lasciato il file postmaster.pid. Faccio questo e lavoro:

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql

10

Il problema è perché esiste già un servizio in esecuzione sulla porta 5432 e non è possibile stabilire una connessione socket psql tramite questa porta.

Ho rimosso il file socket

rm -rf /tmp/.s.PGSQL.5432/

Poi ho reinizializzato i servizi di Postgres

postgres -D /usr/local/var/postgres

Questo ha funzionato per me.


9

Il modo più sicuro per aggirare questo è fare

brew reinstall postgresql

Ciò manterrà intatte le autorizzazioni dell'utente, ecc. E tutto verrà ripristinato a nuovo. Funziona sempre!


ha funzionato come un campione !!!! Tutto ciò era necessario.
Akash K,

Questo ha funzionato, ma consiglio se rm /usr/local/var/postgres/postmaster.pidsu Mac OS non ha funzionato, utilizzare questo comando.
Yaseen Ahmad

7

La modifica delle impostazioni di configurazione di postresql o database.yml, la modifica di $ PATH o la creazione di collegamenti simbolici sono stati tutti inutili per me. Tutto quello che dovevo fare era gem uninstall pge poi bundle(o gem install pg).

Il problema era che la gemma PG era stata installata prima di Postgres homebrew, quindi stava raccogliendo le impostazioni dalla versione di Postgres fornita con MacOS. La reinstallazione (e quindi la ricostruzione dell'estensione nativa) ha risolto il problema.


Volevo solo dire grazie. Ho appena aggiornato PostgresApp su macOS e sebbene potessi connettermi usando psql, non potevo collegarmi tramite rotaie. disinstallare e reinstallare la gemma PG era solo il biglietto! :)
craig1410,

7

Questo è successo a me quando ho aggiornato da 9.3.4 a 9.5 poiché i database sono incompatibili senza l'aggiornamento.

Ho usato pg_upgrade come segue:

Smetti di postgres

$ brew services stop postgresql

Aggiorna i database:

$ pg_upgrade \
   -d /usr/local/var/postgres \
   -D /usr/local/var/postgres9.5 \
   -b /usr/local/Cellar/postgresql/9.3.4/bin/ \
   -B /usr/local/Cellar/postgresql/9.5.0/bin/ \
   -v

Archivia i vecchi database:

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

Riavvia postgres:

 $ brew services start postgresql

Gemme aggiornate (per binari / record attivi):

 $ gem uninstall pg
 $ gem uninstall activerecord-postgresql-adapter
 $ bundle install

Queste istruzioni sono anche su collectiveidea.com/blog/archives/2016/01/08/… , e funzionano ancora oggi per me quando aggiorno dalla 9.4.0 alla 9.6.3. Non ho avuto bisogno di fare nulla per il file .pid manualmente.
Jan Hettich,

7

Questo è in realtà ciò che dovresti fare:

dovresti invece guardare /usr/local/var/postgres/postmaster.pid

e quindi guarda la prima riga del file: questo è il PID errato

Correre

ps aux | grep <PID>

per esempio:

ps aux | grep 12345

Quindi fa

kill <PID>

per esempio

kill 12345

Supponendo che sia ancora in esecuzione

/superuser/553045/fatal-lock-file-postmaster-pid-already-exists

non ascoltare la risposta accettata è male e corromperà i tuoi dati !!!


Grazie, ha funzionato per me. Rimuovere effettivamente postmaster.pid dalla risposta accettata non è stato sufficiente.
Abe Petrillo,

4

Opzione psql

-h hostname --host = hostname

: Specifica il nome host della macchina su cui è in esecuzione il server. Se il valore inizia con una barra, viene utilizzato come directory per il socket del dominio Unix.

$ grep "port\|unix_socket" /etc/postgresql/9.1/main/postgresql.conf
port = 5433                                         # (change requires restart)
unix_socket_directory = '/var/run/postgresql'       # (change requires resta

$ netstat -nalp | grep postgres
unix  2      [ ACC ]     STREAM     LISTENING     106753   4349/postgres       /tmp/.s.PGSQL.5432
unix  2      [ ACC ]     STREAM     LISTENING     10377 1031/postgres       /var/run/postgresql/.s.PGSQL.5433

Esegui psql con l'opzione -host

$ psql -p 5433 -h /var/run/postgresql

Non è necessario creare un collegamento software


4

Ho riscontrato questo problema anche su MacOS Sierra e quando abbiamo eseguito pg_ctl come descritto sopra abbiamo avuto il seguente errore pg_ctl: no database directory specified and environment variable PGDATA unset. Così abbiamo seguito i passi qui che ha risolto il nostro problema, vale a dire:

mkdir ~/.postgres

initdb ~/.postgres

pg_ctl -D ~/.postgres start


4

Se postgres è stato installato usando homebrew, puoi sistemarlo eseguendo:

brew link postgres


4

Se spegnessi il tuo sistema senza uscire da psql, Postgres non avrebbe rimosso alcuni file.

Non ho trovato il file postmaster.pid nella posizione usr / local / var / postgres

Quindi ho fatto quanto segue:

i servizi di infusione iniziano postgresql

Il comando sopra dovrebbe farti avviare postgres


3

Ho riscontrato questo problema dopo aver provato a ripristinare / rilasciare / creare un db mentre altri processi li accedevano. La correzione di MacOSX / Homebrew era:

  1. vicino tutti gli altri processi di accesso rails server, rails console, guard, ecc ...
  2. caricare / scaricare utilizzando i comandi presenti in brew info postgres
  3. esegui restore / drop / create da prima

3

FWIW questo è successo a me oggi, ma quello che è successo è che stavo eseguendo gli aggiornamenti di Ubuntu, che probabilmente stavano aggiornando Postgres. Una volta completato l'aggiornamento, sono stato in grado di connettermi senza intoppi.

Per completezza, stavo cercando di recuperare i record dal database da una console Rails:

development (main):0 > a = MyModel.find 73694
PG::ConnectionBad: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

3

Sembra che il tuo psql non funzioni. Dovresti eseguirlo prima di connetterti. Puoi farlo usando Postgres.app solo per Mac OS. (Scarica e installa questa app http://postgresapp.com ) Apri l'app e hai un server PostgreSQL pronto e in attesa di nuove connessioni. Chiudi l'app e il server si spegne. Puoi trovare queste informazioni anche qui http://www.postgresql.org/download/macosx/ . Spero che questo ti possa aiutare.


1
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia.
Kmeixner,

La domanda si riferiva specificamente a un'installazione homebrew e non a un'installazione Postgres.app. Sebbene questa risposta sia utile, non risponde alla domanda. Sarebbe come dire "Usa MySQL invece".
Brian Caro,

3

È perché un server precedente è ancora in esecuzione, prova a chiudere tutto e rieseguire l'applicazione.


3

Per coloro che usano questo comando e non funzionano o il file non è presente e utilizza Ruby on Rails

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

O qualsiasi altro comando e continua a fallire.

Ho risolto questo problema disinstallando con Brew. Ho dovuto disinstallare con brew 2 volte, perché alla prima disinstallazione rimarrà un'altra versione di postgresql, con la seconda disinstallazione il processo sarà completato.

Installa postgresql con Brew

Quindi rilasciare, creare e migrare le basi di dati del progetto

(Non dimenticare di avviare il server postgresql)


3

Ho avuto lo stesso problema perché sto usando un nome utente Postgres errato nel codice. Ho effettuato l'accesso a Postgres psql -d postgrese ho inserito\du a Postgres e per assumere il nome del ruolo e correggere il nome utente di Postgres.

Quindi, quando affrontate questo problema, dovete assicurarvi di utilizzare il nome utente, la password, il nome host e il database corretti di Postgres ...

Spero che questo possa aiutare chiunque


3

¿Hai cambiato di recente pg_hba.conf? se hai appena verificato la presenza di un errore di battitura in:

"local" è solo per le connessioni socket del dominio Unix

local all all password

Connessioni locali IPv4:

ospitare tutte le password 127.0.0.1/32

Connessioni locali IPv6:

host all all :: 1/128 password

A volte un semplice errore può darci mal di testa. Spero che questo aiuti e scusate se il mio inglese non è affatto buono.


3

Questo succede quando il server Postgres non è in esecuzione. Passaggi per installare correttamente Postgres via Homebrew su MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Questo inizializza Postgres per usare la directory data come directory del database. Normalmente non è consigliabile utilizzare la directory utente per l'archiviazione del database. Modifica il file sudoers per aggiungere initdb e comandi simili, quindi esegui initdb su / usr / local / var / postgres]

  3. pg_ctl -D /Users/<username>/db -l logfile start [Dopo aver avuto successo con il passaggio 2, verrà richiesto di eseguire il passaggio 3. Questo comando avvia manualmente il server.]


2

Ho avuto lo stesso errore. Pare che Postgres non funzionasse affatto (di solito è sempre in esecuzione in background, ma per qualsiasi motivo non lo fosse oggi).

In questo caso, digita semplicemente postgresla riga di comando della directory del tuo progetto


2

Dopo un'enorme quantità di avanti e indietro, arrivò davvero alla pgversione gemma che stavo usando. Sui maverick, la pgversione 0.15.1non si connetteva alla porta 5432 ma la versione 0.17.1funziona bene - molto strano.

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.