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

问题描述 投票:26回答:5

我一直在尝试运行这个通过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

但问题是,有时我会为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)编码将提供最灵活的功能。

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

sql postgresql cmd
5个回答
22
投票

离开这里获取信息,

如果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


12
投票

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


6
投票

就我而言,这是因为我在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

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


3
投票

这是一个老帖子,但......

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

点击这里忘记配置它的人:http://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html


1
投票

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

host    all             all             0.0.0.0/0            trust

对于远程连接使用信任。结合(如上所述)

listen_addresses = '*'
© www.soinside.com 2019 - 2024. All rights reserved.