【发布时间】:2013-04-10 19:09:53
【问题描述】:
我一直在尝试运行这个通过 Postgre DB Server 的批处理文件并运行两个不同的 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 的日志文件对终止的连接有什么说明?
-
PostgreSQL 版本?如果您使用 PostgreSQL 的
bin目录中的psql而不是 PgAdmin-III 中捆绑的一个,会发生什么?任何地方都涉及防火墙吗? -
查看我上面的更新,我的版本是1.16.1
-
如果连接随机中止,我怀疑是网络问题。同样,PostgreSQL 服务器上的日志对这些终止的连接有什么看法? Craig 要求的是 PostgreSQL 版本,而不是 PgAdmin 版本。
-
原来是因为我的本地和服务器之间的 postgre SQL 版本不匹配,在我的计算机上安装相同版本的 PostgreSQL 解决了这个问题。谢谢!
标签: sql postgresql cmd