2013-04-10 16 views
17

Ho cercato di eseguire questo file batch che passa attraverso il server Postgre DB ed eseguire due diversi file SQL, come illustrato di seguito:psql: server ha chiuso la connessione unexepectedly

set PGPASSWORD=blah 
cls 
@echo on 
"C:\Progra~1\pgAdmin III\1.16\psql" -d [db name] -h [server name] -p 5432 -U postgres -f C:\query1.sql 
"C:\Progra~1\pgAdmin III\1.16\psql" -d [db name] -h [server name] -p 5432 -U postgres -f C:\query2.sql 

Ma la questione arriverà quel a volte mi metterò il seguente errore per il comando per Query1 o query2:

psql: server closed the connection unexpectedly 
This probably means the server terminated abnormally 
before or while processing the request. 

Questo accade solo a volte, quindi non sono del tutto sicuro perché sta accadendo. Qualcuno può spiegare perché questo è il caso e se c'è una soluzione a questo problema. Grazie!

Update: Ho anche ottenere lo stesso errore a volte, quando si tenta di aprire il server remoto nell'applicazione effettiva Postgre: "è verificato un errore:" il server ha chiuso la connessione inaspettatamente Questo probabilmente significa che il server terminata in modo anomalo prima o durante la l'elaborazione della richiesta "

ho anche ottenere questa cosa Guru suggerimento subito dopo clicco fuori dalla comparsa dell'errore:..

Database codifica il database VA-trac è stato creato per memorizzare i dati utilizzando la codifica SQL_ASCII questa codifica è definito solo per i caratteri a 7 bit, il significato dei caratteri con l'8 ° bit impostato (caratteri non ASCII 127-255) non definito. Di conseguenza, non è possibile per il server convertire i dati in altre codifiche. Se si memorizzano dati non ASCII nel database, si consiglia vivamente di utilizzare una codifica del database appropriata che rappresenti il ​​set di caratteri internazionali per trarre beneficio dalla conversione automatica a codifiche client diverse quando necessario. Se si memorizzano dati non ASCII in un database SQL_ASCII, è possibile incontrare caratteri strani scritti o letti dal database, a causa di problemi di conversione del codice. Questo potrebbe causare un sacco di mal di testa quando si accede al database utilizzando diversi programmi client e driver. Per la maggior parte delle installazioni, la codifica Unicode (UTF8) fornirà le funzionalità più flessibili.

In ogni caso, il server si apre ancora in seguito e sono in grado di accedere al database da quel momento in poi.

+0

Ottiene lo stesso effetto quando si accede in modo interattivo (vale a dire senza lo script SQL)? Che cosa dice il file di log di PostgreSQL sulle connessioni terminate? –

+1

Versione PostgreSQL? Cosa succede se si usa 'psql' dalla directory' bin' di PostgreSQL piuttosto che una in bundle in PgAdmin-III? C'è un firewall coinvolto ovunque? –

+0

Controlla il mio aggiornamento sopra, la mia versione è 1.16.1 – user974047

risposta

9

Si è scoperto che c'era una discrepanza tra la versione SQL di Postgre tra il mio server locale e il server, l'installazione della stessa versione di PostgreSQL nel mio computer ha risolto il problema. Grazie!

11

Lasciando questo qui per informazioni,

Questo errore può essere causato anche se il server PostgreSQL è su un'altra macchina ed è non è in ascolto su interfacce esterne.

eseguire il debug di questo problema specifico, è possibile seguire tesi passi:

  • Guardate il vostro postgresql.conf, sudo vim /etc/postgresql/9.3/main/postgresql.conf
  • Aggiungi questa linea: listen_addresses = '*'
  • Riavviare il servizio sudo /etc/init.d/postgresql restart

(Nota, i comandi sopra sono per Ubuntu. Altri linux distro o OS possono avere un percorso differente per questi file)

Nota: l'utilizzo di '*' per gli indirizzi di ascolto ascolterà su tutte le interfacce.Se fai '0.0.0.0' allora ascolterà tutto l'ipv4 e se lo fai, '::' allora ascolterà per tutti gli ipv6.

http://www.postgresql.org/docs/9.3/static/runtime-config-connection.html

5

Nel mio caso, è stato perché ho creato la configurazione IP erroneamente pg_hba.conf, che si trova all'interno della cartella dati in Windows.

# IPv4 local connections: 
host all    all    127.0.0.1/32   md5 
host all    all    192.168.1.0/24   md5 

Ho erroneamente immesso (copiato :-)) 192.168.0.0 anziché 192.168.1.0.

Problemi correlati