为什么 pg_dump/psql 抛出“致命:启动数据包中没有指定 PostgreSQL 用户名”?

Ev0*_*0oD 25 postgresql pg-dump

我正在尝试在我们的 postgresql 服务器 v13 上运行 pg_dump (甚至 psql),其中包含来自 v13 和 v16 的二进制文件。两者都不适用于我,但适用于我不在 Mac 上的同事,不确定是否与此相关。

当我尝试运行时:

pg_dump -U grails --verbose --host=<host> --port=<port> --format=plain <db_name> > <target_file>
Run Code Online (Sandbox Code Playgroud)

甚至简单:

psql -U grails --host=.. --port=..
Run Code Online (Sandbox Code Playgroud)

我得到以下信息:

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  
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*ger 39

这个问题(我也遇到过)似乎是由 Postgres 和 openssl 版本 3.2.0 之间的不兼容/错误引起的。降级到 openssl 版本 3.1.4(如自制用户此处记录的那样)对我来说是一种解决方法。

  • 有关信息:brew postgres 包已修复,“brew 升级”应该可以解决该问题(请参阅 https://github.com/Homebrew/homebrew-core/issues/155651#issuecomment-1830261308)。 (30认同)

Ev0*_*0oD 3

问题似乎出在 Postgres 的 brew 版本上。我尝试使用官方网站上的安装程序安装 Postgres,但在使用从自制程序获取的二进制文件时没有遇到问题。