Mac zsh终端无法连接Azure PostgreSQL服务器,伴随malloc双重释放错误求助
Mac zsh终端无法连接Azure PostgreSQL服务器,伴随malloc双重释放错误求助
问题描述
我之前一直能正常连接Azure部署的PostgreSQL服务器,但从两天前开始,在Mac的zsh终端执行连接命令时失败,还触发了malloc双重释放的错误。具体的连接命令和错误输出如下:
连接命令:
psql "host=backbone-dev.postgres.database.azure.com port=5432 dbname=postgres user=postgres@backbone-dev password=blabblahblah sslmode=require"
错误输出:
psql: error: connection to server at "backbone-dev.postgres.database.azure.com" (52.182.136.38), port 5432 failed: FATAL: Invalid Username specified. Please check the Username and retry connection. The Username should be in <username@hostname> format. psql(1657,0x1fd7f5e00) malloc: double free for ptr 0x144008200 psql(1657,0x1fd7f5e00) malloc: *** set a breakpoint in malloc_error_break to debug zsh: abort psql
我已经做了这些排查:
- 其他同事能正常连接该服务器,用Azure云shell也能成功连接,说明服务器本身没有问题,问题出在我的本地Mac上
- 搜索了malloc双重释放的错误信息,但没找到针对性的解决办法
- 联系了Azure官方支持,他们也无法定位和解决这个问题
- 我的psql版本是:
psql (PostgreSQL) 14.10 (Homebrew)
可能的解决方向
针对你遇到的本地客户端问题,推荐按以下步骤尝试排查和修复:
重装Homebrew安装的PostgreSQL客户端
本地PostgreSQL客户端的文件可能出现损坏,导致内存操作异常。执行以下命令重装:brew reinstall postgresql重装完成后,再尝试执行连接命令测试。
检查并清理冲突的环境变量
本地可能存在异常的PostgreSQL相关环境变量(比如PGUSER、PGPASSWORD、PGHOST等),干扰了psql的正常执行。可以先查看当前环境变量:env | grep PG如果发现和本次连接参数冲突的变量,临时取消掉(比如
unset PGUSER),再重新尝试连接。排除终端/zsh配置问题
- 尝试切换到bash终端执行连接命令,如果能成功连接,说明问题出在zsh的配置文件中。可以检查
.zshrc、.zprofile等文件,看看有没有自定义的psql别名、脚本或者环境变量设置导致冲突。 - 如果bash也不行,再试试用其他PostgreSQL客户端工具(比如pgAdmin)连接,看是否只有psql命令行工具出现问题。
- 尝试切换到bash终端执行连接命令,如果能成功连接,说明问题出在zsh的配置文件中。可以检查
检查本地依赖库是否异常
Homebrew安装的软件可能依赖的系统库出现问题,可以尝试更新Homebrew并重新安装相关依赖:brew update brew upgrade完成后再测试连接。
再次验证用户名格式
虽然你说之前能正常连接,但还是可以再确认下用户名是否严格符合<username@hostname>格式,比如postgres@backbone-dev是否和Azure PostgreSQL服务器的主机名完全匹配,有没有拼写错误。
备注:内容来源于stack exchange,提问作者cheuk209
相关产品推荐
相关产品推荐

