psql:服务器意外关闭了连接

use*_*047 30 sql postgresql cmd

我一直在尝试运行这个通过Postgre数据库服务器的批处理文件并运行两个不同的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
Run Code Online (Sandbox Code Playgroud)

但问题是,有时我会为query1或query2的命令得到以下错误:

psql: server closed the connection unexpectedly 
This probably means the server terminated abnormally
before or while processing the request.
Run Code Online (Sandbox Code Playgroud)

这有时只会发生,所以我不完全确定它为什么会发生.有人可以解释为什么会这样,如果有解决这个问题的方法.谢谢!

更新:尝试在实际的Postgre应用程序中打开远程服务器时,我也得到相同的错误:"发生了错误:"服务器意外关闭了连接这可能意味着服务器在处理请求之前或处理时异常终止."

我点击错误弹出窗口后,我也得到了这个Guru Hint的东西:

数据库编码创建数据库VA-trac以使用SQL_ASCII编码存储数据.此编码仅针对7位字符定义; 未定义第8位设置的字符(非ASCII字符127-255)的含义.因此,服务器无法将数据转换为其他编码.如果要在数据库中存储非ASCII数据,强烈建议您使用表示区域设置字符集的正确数据库编码,以便在需要时自动转换为不同的客户端编码.如果将非ASCII数据存储在SQL_ASCII数据库中,则可能会遇到由代码转换问题导致写入或读取数据库的奇怪字符.使用不同的客户端程序和驱动程序访问数据库时,这可能会让您头疼.对于大多数安装,Unicode(UTF8)编码将提供最灵活的功能.

无论如何,服务器之后仍然打开,我可以从那时起访问数据库.

Gab*_*Gab 25

离开这里获取信息,

如果PostgreSQL服务器在另一台机器上并且没有在外部接口上侦听,也会导致此错误.

要调试此特定问题,您可以按照以下步骤操作:

  • 看看你的postgresql.conf, sudo vim /etc/postgresql/9.3/main/postgresql.conf
  • 添加此行: listen_addresses = '*'
  • 重启服务 sudo /etc/init.d/postgresql restart

(注意,上面的命令适用于ubuntu.其他Linux发行版或OS可能有不同的路径到这些文件)

注意:使用'*'侦听地址将侦听所有接口.如果你'0.0.0.0'那么它会监听所有ipv4,如果你这样做,'::'那么它将监听所有的ipv6.

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

  • 这对我来说没有意义。如果连接从未建立,如何终止连接? (5认同)
  • 这行 `listen_addresses = '*'` 默认存在于 https://hub.docker.com/_/postgres 上的官方 Dockerized 镜像上 (3认同)

use*_*047 12

事实证明这是因为我本地和服务器之间的postgre SQL版本不匹配,在我的计算机上安装相同版本的PostgreSQL修复了这个问题.谢谢!

  • 如何找出哪个 pgAdmin 版本可以连接到哪个 postgres 版本? (3认同)
  • 2020 年 8 月。这仍然具有现实意义。 (2认同)

n_y*_*n_y 7

就我而言,这是因为我在pg_hba.conf中错误地设置了IP配置,它位于Windows的数据文件夹中.

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.0/24            md5
Run Code Online (Sandbox Code Playgroud)

我错误地输入(复制粘贴:-))192.168.0.0而不是192.168.1.0.


小智 7

就我而言,我通过 pgAdmin 使用 ssh 隧道建立连接并设置为主机字段 ip 地址,但有必要设置localhost


WKT*_*WKT 5

这是一篇旧帖子,但是...

只是惊讶没有人谈论 pg_hba 文件,因为它可能是获取此错误代码的一个很好的理由。

检查这里对于那些忘记配置它的人: http ://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html


geo*_*eos 5

就我而言,我使用的是 Postgresql 9.2.24,解决方案是这样的 (pg_hba.conf):

host    all             all             0.0.0.0/0            trust
Run Code Online (Sandbox Code Playgroud)

对于远程连接,请使用trust。结合(如上所述)

listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)

  • 另请注意,`listen_addresses = '*'` 不属于 `pg_hba.conf`,而是属于 `postgresql.conf`,默认情况下,list_addresses 设置为 all (*)。https://www.postgresql.org/message-id/A76B25F2823E954C9E45E32FA49D70EC9199AF46@mail.corp.perceptron.com (2认同)
  • 但这并不安全,因此我不建议您在生产中使用它。这可能表明 pg_hba.conf 中确实存在需要解决的网络津贴问题。 (2认同)