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

64

我一直在尝试运行这个批处理文件,它会通过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

但问题在于,有时候我会在执行查询1或查询2的命令时遇到以下错误:

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

这种情况有时会发生,所以我不确定为什么会出现这种情况。是否有人能解释一下为什么会出现这种情况,以及是否有解决此问题的方法。谢谢!

更新:在尝试在实际的Postgre应用程序中打开远程服务器时,有时也会出现相同的错误:“发生错误:“服务器意外关闭连接。这可能意味着服务器在处理请求之前或期间异常终止。”

当我单击错误弹出窗口后,我还会得到这个Guru提示:

数据库编码 数据库VA-trac是使用SQL_ASCII编码创建的,用于存储数据。该编码仅针对7位字符定义;未定义带有第8位设置(非ASCII字符127-255)的字符的含义。因此,无法将数据转换为其他编码。 如果您正在数据库中存储非ASCII数据,则强烈建议您使用表示您本地字符集的适当数据库编码,以便在需要时从自动转换为不同的客户端编码中受益。如果您将非ASCII数据存储在SQL_ASCII数据库中,则可能会遇到写入或读取数据库时出现的奇怪字符,这是由于代码转换问题引起的。当使用不同的客户端程序和驱动程序访问数据库时,这可能会给您带来很多麻烦。 对于大多数安装而言,Unicode(UTF8)编码提供了最灵活的功能。

无论如何,服务器仍然会打开,此后我就能够访问数据库。


当您交互式登录(即不使用SQL脚本)时,是否会得到相同的效果?PostgreSQL的日志文件对终止的连接有何说法? - Ansgar Wiechers
1
PostgreSQL 版本是多少?如果使用 PostgreSQL 的 bin 目录中的 psql 而不是 PgAdmin-III 中打包的 psql,会发生什么?是否有任何涉及防火墙的情况? - Craig Ringer
请查看我上面的更新,我的版本是1.16.1。 - user974047
2
如果连接随机中断,我会怀疑是网络问题。另外,PostgreSQL服务器日志中有关于这些断开的连接的信息吗?而且Craig询问的是PostgreSQL版本,而不是PgAdmin版本。 - Ansgar Wiechers
事实证明,这是因为我的本地计算机和服务器之间的PostgreSQL版本不匹配,安装相同版本的PostgreSQL解决了问题。谢谢! - user974047
我曾经遇到过同样的问题,但当我尝试在Excel宏中使用ADO连接到数据库以运行查询并在Excel中填充记录集时。我运行了VACUUM/ANALYZE,重新运行了宏,然后记录集在不到5秒钟内填充完毕。 - jones-chris
14个回答

0
在我的情况下,我的Postgres RDS实例已经停止了...

0
在我的情况下,这是postgresql.conf和pg_hba.conf之间的不一致。 pg_hba.conf中有一个hostssl规则。
hostssl   all           all             0.0.0.0/0               md5

postgresql.conf有

ssl = off

0

首先为用户设置密码即可解决问题。

在终端中执行以下操作:

sudo -u <username> psql

ALTER USER <username> PASSWORD 'SetPassword';
# ALTER ROLE

\q

在pgAdmin中
**Connection**

Host name/address: 127.0.0.1
Port: 5432
Maintenance database: postgres
username: postgres
password: XXXXXX

-1
我在我的Postgres中遇到了同样的问题。
由于只有我的Django模型的save()方法(一个庞大的模型)出现了这个问题,我怀疑是插入的记录大小的原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接