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
相关产品推荐
相关产品推荐

