2013-04-10 14 views
17

Próbowałem uruchomić ten plik wsadowy, który przechodzi przez serwer Postgre DB i uruchomić dwa różne pliki SQL, jak pokazano poniżej:psql: Serwer zakończył połączenie 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 

Ale problem nadchodzi czasami będę się następujący błąd dla każdej komendy dla Kwerenda1 lub QUERY2:

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

dzieje się tak tylko czasami, więc nie jestem do końca pewien, dlaczego to się dzieje. Czy ktoś może wyjaśnić, dlaczego tak jest i czy istnieje rozwiązanie tego problemu. Dzięki!

Aktualizacja: I również uzyskać ten sam błąd czasami, gdy próbuje otworzyć zdalny serwer w rzeczywistej aplikacji Postgre: „Wystąpił błąd:” Serwer zamknął połączenie niespodziewanie To prawdopodobnie oznacza, że ​​serwer zakończona nieprawidłowo przed lub podczas przetwarzania żądania „

ja również uzyskać ten Guru Hint rzecz zaraz po kliknięciu na popup błędu:..

kodowanie bazy danych baza VA-Trac jest stworzony do przechowywania danych za pomocą kodowania SQL_ASCII kodujący jest zdefiniowany tylko dla znaków 7-bitowych, znaczenie znaków dla ósmej zestaw bitów (znaki spoza ASCII 127-255) nie jest zdefiniowany. W związku z tym serwer nie może konwertować danych na inne kodowania. Jeśli przechowujesz dane spoza ASCII w bazie danych, zdecydowanie zaleca się użycie odpowiedniego kodowania bazy danych reprezentującego Twój zestaw znaków regionalnych, aby w razie potrzeby skorzystać z automatycznej konwersji do różnych kodowań klienta. Jeśli przechowujesz dane inne niż ASCII w bazie danych SQL_ASCII, możesz napotkać dziwne znaki zapisane lub odczytane z bazy danych, spowodowane problemami z konwersją kodu. Może to powodować wiele bólu głowy podczas uzyskiwania dostępu do bazy danych przy użyciu różnych programów klienckich i sterowników. Dla większości instalacji kodowanie Unicode (UTF8) zapewni najbardziej elastyczne możliwości.

Bez względu na to, serwer nadal się otwiera, a ja jestem w stanie uzyskać dostęp do bazy danych od tego momentu.

+0

Czy uzyskujesz ten sam efekt, gdy logujesz się w trybie interaktywnym (tzn. Bez skryptu SQL)? Co mówi plik dziennika PostgreSQL o zakończonych połączeniach? –

+1

Wersja PostgreSQL? Co się stanie, jeśli użyjesz 'psql' z katalogu' bin' PostgreSQL, a nie takiego, który jest dołączony do PgAdmin-III? Czy jest gdziekolwiek ściana ogniowa? –

+0

Sprawdź moją aktualizację powyżej, moja wersja to 1.16.1 – user974047

Odpowiedz

9

Okazuje się, że jest to spowodowane niezgodnością między wersją Postgre SQL między moim lokalnym a serwerem, zainstalowanie tej samej wersji PostgreSQL w moim komputerze rozwiązało problem. Dzięki!

11

Pozostawiając to tutaj informacji,

Ten błąd może być również spowodowany jeśli serwer PostgreSQL jest na innym komputerze i jest nie nasłuchuje na zewnętrznych interfejsów.

Aby debugować ten problem, można wykonać następujące kroki tezy:

  • spojrzeć na swoje postgresql.conf, sudo vim /etc/postgresql/9.3/main/postgresql.conf
  • Dodaj tę linię: listen_addresses = '*'
  • ponownie uruchomić usługę sudo /etc/init.d/postgresql restart

(Uwaga: powyższe komendy są przeznaczone dla Ubuntu, inne dystrybucje Linuksa lub system operacyjny mogą mieć inną ścieżkę do tych plików)

Uwaga: użycie adresu '*' spowoduje odsłuchanie wszystkich interfejsów.Jeśli zrobisz '0.0.0.0', to będzie nasłuchiwał wszystkich ipv4, a jeśli wykonasz '::', to będzie nasłuchiwał wszystkich ipv6.

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

5

W moim przypadku, to dlatego, że ustawić konfigurację IP niesłusznie pg_hba.conf, który siedzi wewnątrz folderu danych w systemie Windows.

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

Pomyłkowo wpisałem (skopiowano-wkleiłem :-)) 192.168.0.0 zamiast 192.168.1.0.

Powiązane problemy