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

在testdriven.io教程中执行命令遇SCRAM认证版本错误求助

解决psycopg2-binary与libpq版本不兼容导致的SCRAM认证错误

针对你遇到的SCRAM authentication requires libpq version 10 or above错误,以下是几种可行的解决方案:

方案1:更换Docker基础镜像为Debian Bullseye

你当前使用的slim-buster(Debian Buster)默认libpq版本低于10,无法支持SCRAM认证。而Debian Bullseye版本的libpq为13,完全满足要求。

修改Dockerfile的基础镜像行:

FROM python:3.10.3-slim-bullseye

同时简化系统依赖安装步骤(无需安装完整postgresql包):

# 安装编译依赖
RUN apt-get -qq update \
    && apt-get -qq install -y libpq-dev gcc netcat 1>/dev/null \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

重新构建镜像并运行即可。

方案2:在Buster镜像中手动安装高版本libpq

如果不想更换基础镜像,可以从PostgreSQL官方源安装更高版本的libpq:

替换Dockerfile中原有的依赖安装部分为以下内容:

# 添加PostgreSQL官方源
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
    && curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
    && apt-get -qq update \
    && apt-get -qq install -y libpq12 libpq-dev gcc netcat 1>/dev/null \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

方案3:临时降级PostgreSQL认证方式(不推荐用于生产)

如果上述方案无法快速生效,可临时修改PostgreSQL服务端配置,将SCRAM改为MD5认证:

  1. 进入PostgreSQL容器:docker-compose exec db bash
  2. 修改postgresql.conf:将password_encryption = scram-sha-256改为password_encryption = md5
  3. 修改pg_hba.conf:将对应数据库行的scram-sha-256改为md5
  4. 重启PostgreSQL服务:pg_ctl restart

注意:此方案仅作为临时应急,SCRAM比MD5安全性更高,生产环境建议优先使用前两种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:24:29