Psql: сервер неожиданно закрыл соединение
Я пытаюсь запустить этот командный файл, который проходит через сервер Postgre DB и запускает два разных файла sql, как показано ниже:
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: "Произошла ошибка:" сервер неожиданно закрыл соединение
Это, вероятно, означает, что сервер прерывается ненормально
до или во время обработки запроса ".
Я также получаю эту вещь Guru Hint сразу после того, как я выхожу из всплывающего окна ошибки:
Кодировка базы данных
База данных VA-trac создана для хранения данных с использованием кодировки SQL_ASCII. Эта кодировка определяется только для 7-битных символов; значение символов с 8-м битом (не-ASCII-символы 127-255) не определено. Следовательно, сервер не может преобразовывать данные в другие кодировки.
Если вы сохраняете данные, отличные от ASCII, в базе данных, вам настоятельно рекомендуется использовать надлежащую кодировку базы данных, представляющую ваш набор символов языка, чтобы при необходимости использовать автоматическое преобразование в различные кодировки клиентов. Если вы храните данные, отличные от ASCII, в базе данных SQL_ASCII, вы можете столкнуться со странными символами, написанными или считываемыми из базы данных, вызванными проблемами преобразования кода. Это может вызвать у вас большую головную боль при доступе к базе данных с использованием разных клиентских программ и драйверов.
Для большинства установок кодировка Unicode (UTF8) обеспечит самые гибкие возможности.
Несмотря на это, сервер по-прежнему открывается после этого, и я могу получить доступ к базе данных с этой точки.
Ответы
Ответ 1
Оставив это здесь для информации,
Эта ошибка также может быть вызвана, если 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
Оказывается, это связано с тем, что между версией postgre SQL между моим локальным и сервером существует несоответствие, установка этой же версии PostgreSQL на моем компьютере устраняет проблему. Благодарю!
Ответ 3
В моем случае это произошло потому, что я неправильно настроил 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.
Ответ 4
Это старый пост, но...
просто удивился, что никто не говорит о файле pg_hba, так как это может быть хорошей причиной для получения этого кода ошибки.
Отметьте здесь тех, кто забыл настроить его:
http://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html
Ответ 5
В моем случае я использую Postgresql 9.2.24, и решение было таким (pg_hba.conf):
host all all 0.0.0.0/0 trust
Для удаленных подключений используйте доверие. В сочетании с (как упомянуто выше)
listen_addresses = '*'
Ответ 6
Если ваш Postgres работал и неожиданно вы столкнулись с этой ошибкой, моя проблема была решена путем перезапуска службы или контейнера Postgres.