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

Cloud Run连接Cloud SQL PostgreSQL时遭遇连接拒绝及证书不匹配问题求助

Cloud Run连接Cloud SQL PostgreSQL时遭遇连接拒绝及证书不匹配问题求助

Sup? 我现在碰到个超级头疼的问题:我想让Cloud Run上运行的FastAPI Python容器连接Cloud SQL上的PostgreSQL数据库,但不管怎么折腾都报错,最闹心的就是「连接被拒绝」的错误。我几乎试了所有能想到的办法——配置SQL客户端角色、换各种连接字符串、添加客户端SQL连接、翻官方文档、问各种LLM,结果全不管用。

我把收到的错误日志贴在这里:

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) connection to server on socket "/cloudsql/<project_id>:<region_id>:<instance_id>/.s.PGSQL.5432" failed: Connection refused
Cloud SQL connection failed. Please see https://cloud.google.com/sql/docs/mysql/connect-run for additional details: certificate had CN "", expected "<project_id>:<region_id>:<instance_id>"

我目前尝试过的几种连接代码如下:

第一种配置方式

DB_CONFIG = {
    "drivername": "postgresql+psycopg2",
    "username": os.getenv("DB_USER"),
    "password": os.getenv("DB_PASS"),
    "database": os.getenv("DB_NAME"),
    "query": {
        "host": os.getenv("DB_HOST")  # 格式示例: /cloudsql/<project_id>:<region>:<instance_name>
    }
}

第二种配置方式

DB_CONFIG = {
    "drivername": "postgresql+psycopg2",
    "username": os.getenv("DB_USER"),
    "password": os.getenv("DB_PASS"),
    "database": os.getenv("DB_NAME"),
    "host": os.getenv("DB_HOST")
}
engine = create_engine(URL.create(**DB_CONFIG))

第三种直接使用连接字符串的方式

DATABASE_URL = os.getenv(
    "DATABASE_URL",
    "postgresql://<user>:<pass>@/<db_name>?host=/cloudsql/<project_id>:<region>:<instance_name>"
)
engine = create_engine(DATABASE_URL)

补充说明:我的代码是用Python写的FastAPI,已经打包成容器在Cloud Run上运行,目标数据库是Cloud SQL上的PostgreSQL实例。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 11:09:50