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

GitHub Action部署PostgreSQL12报错role "root" does not exist如何解决

问题原因

报错的触发周期与你配置的postgres健康检查10秒执行间隔完全匹配,问题核心是健康检查命令未指定数据库用户名:

  • pg_isready命令执行时默认会使用当前系统用户作为数据库登录角色,而Docker容器中执行健康检查命令的默认用户是root
  • 你在postgres配置中仅创建了名为pguser的数据库角色,不存在root角色,因此每次健康检查都会触发role "root" does not exist报错
解决方案

修改docker-compose.yml中postgres服务的healthcheck.test配置,显式指定要使用的数据库用户名和数据库名即可:

healthcheck:
  test: [ "CMD-SHELL", "pg_isready -U pguser -d pgdb" ]
  interval: 10s
  timeout: 5s
  retries: 5

参数说明:

  • -U pguser 指定使用你配置的pguser角色登录数据库
  • -d pgdb 指定连接你创建的pgdb库,若不需要校验库的可用性可以省略该参数

修改后重新启动服务即可消除报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:24:07