You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu机器中CircleCI流程下非交互式Postgres命令挂起求助

问题根因

你遇到的挂起是psql等待密码输入导致的:
pg_isready仅检测PostgreSQL端口是否处于可连接状态,不需要完成身份校验,所以可以正常退出。而你执行SQL命令时需要完成登录验证,Ubuntu默认安装的PostgreSQL对本地TCP连接(你配置的localhost连接走TCP协议)启用了密码验证规则,你没有配置密码相关参数,psql会卡在无回显的密码输入步骤,看起来就是挂起无输出。

可行解决方案(二选一即可)

方案1:使用系统用户身份认证(无需修改配置,更简单)

PostgreSQL默认支持peer身份认证:与PostgreSQL内同名的系统用户可以直接免密登录。你只需要在执行psql命令时切换到postgres系统用户即可,调整后的步骤参考:

- run: |
    sudo -u postgres psql \
    -c "CREATE TABLE test (name char(25));"
- run: |
    sudo -u postgres psql \
    -c "INSERT INTO test VALUES ('John'), ('Joanna'), ('Jennifer');"
- run: |
    sudo -u postgres psql \
    -c "SELECT * from test;"

如果要保留DATABASE_URL的配置,也可以只在原有psql命令前加sudo -u postgres即可。

方案2:修改认证规则允许免密登录

如果你要保持原有命令格式不变,可以在安装PostgreSQL后新增两步配置,放开本地连接的认证限制:

- run: sudo apt-get install postgresql
# 新增以下两行配置
- run: sudo sed -i 's/host all all 127.0.0.1\/32 scram-sha-256/host all all 127.0.0.1\/32 trust/' /etc/postgresql/12/main/pg_hba.conf
- run: sudo systemctl restart postgresql
# 原有后续步骤保持不变
- run: psql -V
- run: pg_isready

内容的提问来源于stack exchange,提问作者calipoop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:06:06