我一直在尝试运行这个批处理文件,该文件通过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)编码将提供最灵活的功能。
无论如何,服务器之后仍然打开,我可以从那时起访问数据库。
答案 0 :(得分:21)
请留待此处获取信息,
如果PostgreSQL服务器在另一台机器上并且没有在外部接口上侦听,也会导致此错误。
要调试此特定问题,您可以按照以下步骤操作:
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
答案 1 :(得分:12)
事实证明,这是因为我的本地和服务器之间的postgre SQL版本不匹配,在我的计算机上安装相同版本的PostgreSQL修复了这个问题。谢谢!
答案 2 :(得分: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 :(得分:3)
这是一个老帖子,但......
对于没有人谈论pg_hba文件感到惊讶,因为它可能是获取此错误代码的一个很好的理由。
在这里查看忘记配置它的人: http://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html
答案 4 :(得分:3)
在我的情况下,我正在通过ssh隧道通过pgAdmin建立连接,并将其设置为主机字段ip地址,但必须设置localhost
答案 5 :(得分:1)
如果您使用的是Docker,请确保您未在其他服务中使用相同的端口,就我而言,我误将PostgreSQL和Redis都使用了相同的端口。
答案 6 :(得分:0)
在我的情况下,我使用的是Postgresql 9.2.24,解决方案是这个(pg_hba.conf):
host all all 0.0.0.0/0 trust
对于远程连接,请使用 trust 。结合(如上所述)
listen_addresses = '*'
答案 7 :(得分:0)
如果您的Postgres工作正常,并且突然遇到此错误,则仅通过重新启动Postgres服务或容器即可解决我的问题。
答案 8 :(得分:0)
通过首先为用户设置密码来解决。
在终端
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
...
},
"configurations": {
"production": {
...
},
"es5": {
"tsConfig": "./tsconfig-es5.app.json"
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
...
},
"configurations": {
"production": {
...
},
"es5": {
"browserTarget": "yourAppName:build:es5"
}
}
},
在pgAdmin中
sudo -u <username> psql
ALTER USER <username> PASSWORD 'SetPassword';
# ALTER ROLE
\q
答案 9 :(得分:0)
就我而言,我尝试通过 pgAdmin4 使用 ssh 隧道连接,然后在服务器的 AllowTcpForwarding no
中设置 /etc/ssh/sshd_config
。但它应该是 AllowTcpForwarding yes
。