为什么pg_dump/psql会报错"FATAL: no PostgreSQL user name specified in startup packet"?

8
我正在尝试在我们的PostgreSQL服务器v13上运行pg_dump(甚至是psql),使用v13和v16的二进制文件。对我来说都不起作用,但对我的同事来说却可以,他们不是用的Mac,不确定是否与此有关。
当我尝试运行时:
pg_dump -U grails --verbose --host=<host> --port=<port> --format=plain <db_name> > <target_file>

或者甚至更简单一点:
psql -U grails --host=.. --port=..

我得到以下内容:
pg_dump: error: connection to server at "...", port ... failed: FATAL:  no PostgreSQL user name specified in startup packet
connection to server at "...", port ... failed: FATAL:  no PostgreSQL user name specified in startup packet
pg_dump(71055,0x1db08dec0) malloc: *** error for object 0x92: pointer being freed was not allocated
pg_dump(71055,0x1db08dec0) malloc: *** set a breakpoint in malloc_error_break to debug
[1]    71055 abort      pg_dump --verbose --host=... --port=... -U grails --format=plain  

用户名明确指定为参数,我的同事们没有问题。malloc错误也很奇怪。可能发生了什么?

这对我来说看起来像是可执行文件或其使用的库的某种损坏。如果您尝试使用相同的连接参数连接到psql(而不是pg_dump),会发生什么情况?您能在其他Mac上重现这个问题吗?如果您将用户名更改为其他内容,会发生什么情况?我预计会失败,但是它会以相同的错误还是不同的错误失败? - undefined
psql也以相同的错误失败了。有趣。但是当连接到我的本地数据库时,它并不会失败。即使只是使用主机和端口(以及用户名)连接到该服务器时,也会出现错误。如果我在M1Pro上运行,而服务器在不同的架构上运行,这不应该是个问题,对吗? - undefined
我可能稍后再试一台苹果电脑来检查一下。 - undefined
1
我刚刚升级到Sonoma 14.1.1,开始遇到了同样的问题,我的postgres版本是v15。使用brew重新安装postgres似乎没有效果,brew doctor也没有发现问题。 还没有升级的同事似乎没有遇到这个问题。 - undefined
2个回答

9
这个问题(我也遇到过)似乎是由于Postgres和openssl版本3.2.0之间的不兼容性/错误引起的。降级到openssl版本3.1.4(如这里的homebrew用户文档所述)对我来说是一个解决方法。

早上以来,我一直遇到这个问题,因为brew更新了openssl@3,这个解决方法对我很有帮助。 - undefined
可以确认这对我也有效,找得不错。+1 - undefined
6
有关信息:brew postgres软件包已修复,运行brew upgrade应该可以解决问题(请参考https://github.com/Homebrew/homebrew-core/issues/155651#issuecomment-1830261308)。 - undefined

1
似乎问题出在Postgres的brew版本上。我尝试使用官方网站提供的安装程序安装Postgres,使用这种方式时没有遇到我在使用homebrew获取的二进制文件时遇到的问题。

这可能是一些与Postgres本身相关的链接库问题,但这是一个有用的临时解决方法。+1 - undefined

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