2013-04-10 6 views
17

Я пытался запустить этот командный файл, который идет через сервер Postgre DB и запустить два различных SQL-файлы, как показано ниже:PSQL: сервер закрыл соединение 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 

Но вопрос приходит, что иногда я получаю следующую ошибку либо для команды для Query1 или Query2:

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

Это происходит только иногда, так что я не совсем уверен, почему это происходит. Может кто-нибудь объяснить, почему это так, и если есть решение этой проблемы. Благодаря!

Обновление: Я также получаю ту же ошибку ИНОГДА при попытке открыть удаленный сервер в реальном приложении Postgre: «Произошла ошибка:» Сервер закрыл соединение неожиданно Это, вероятно, означает, что сервер завершается ненормально до или во время обработки запроса «

я также получить этот Гуру Hint вещь сразу после я нажимаю из всплывающего окна ошибки:..

базы данных кодирования база VA-ПРОФ создается для хранения данных с использованием кодировки SQL_ASCII эта кодировка определяется только для 7-битных символов, значение символов с восьмым бит (не-ASCII-символы 127-255) не определен. Следовательно, сервер не может преобразовывать данные в другие кодировки. Если вы сохраняете данные, отличные от ASCII, в базе данных, вам настоятельно рекомендуется использовать подходящую кодировку базы данных, представляющую ваш набор символов локали, чтобы при необходимости использовать автоматическое преобразование в различные кодировки клиентов. Если вы храните данные, отличные от ASCII, в базе данных SQL_ASCII, вы можете столкнуться со странными символами, написанными или считываемыми из базы данных, вызванными проблемами преобразования кода. Это может вызвать у вас большую головную боль при доступе к базе данных с использованием разных клиентских программ и драйверов. Для большинства установок кодировка Unicode (UTF8) обеспечит самые гибкие возможности.

Несмотря на это, сервер по-прежнему открывается после этого, и я могу получить доступ к базе данных с этой точки.

+0

Получаете ли вы тот же эффект при входе в систему интерактивно (т. Е. Без SQL-скрипта)? Что говорит файл журнала PostgreSQL о завершенных соединениях? –

+1

PostgreSQL версия? Что произойдет, если вы используете 'psql' из каталога' bin' в PostgreSQL, а не в пакете PgAdmin-III? Существует ли какой-либо брандмауэр? –

+0

Проверьте мое обновление выше, моя версия 1.16.1 – user974047

ответ

9

Оказывается, это связано с тем, что между версией postgre SQL между моим локальным и сервером существует несоответствие, установка этой же версии PostgreSQL на моем компьютере устраняет проблему. Благодаря!

11

Оставляя это здесь для информации,

Эта ошибка также может возникнуть, если сервер PostgreSQL на другой машине и не прослушивает внешних интерфейсов.

Для отладки этой конкретной проблемы, вы можете следовать тезисы шаги:

  • Посмотрите на свой postgresql.conf, sudo vim /etc/postgresql/9.3/main/postgresql.conf
  • Добавьте эту строку: listen_addresses = '*'
  • перезапуска службы sudo /etc/init.d/postgresql restart

(Обратите внимание, что приведенные выше команды предназначены для ubuntu. Другие дистрибутивы или ОС Linux могут иметь различный путь к файлам тезисов)

Примечание: использование '*' для прослушивания адресов будет прослушивать все интерфейсы.Если вы делаете '0.0.0.0', тогда он будет слушать все ipv4, и если вы сделаете '::', тогда он будет слушать все ipv6.

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

2

это старый пост, но ...

просто удивлен, что никто не говорить о pg_hba файла, как это может быть хорошая причина, чтобы получить этот код ошибки.

Проверить здесь для тех, кто забыл настроить его: http://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html

5

В моем случае, это было потому, что я настроить конфигурацию IP неправильно в pg_hba.conf, который находится внутри папки данных в Windows.

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

я по ошибке вошел (скопировано-вставили :-)) 192.168.0.0 вместо 192.168.1.0.

Смежные вопросы