在Cloud Function中通过Prisma连接CloudSQL Postgres失败求助
Cloud Function 中 Prisma 连接强制SSL的CloudSQL Postgres数据库失败
我在Cloud Function中通过Prisma连接带公网IP且强制开启SSL的CloudSQL Postgres数据库,本地用Cloud Auth Proxy能正常连接,但部署到云端后出现连接错误。
已尝试的两种配置方案
方案1
datasource db { provider = "postgresql" url = "postgresql://USER:PASSWORD@localhost:3307/DATABASE_NAME?host=CONNECTION_URL" }
报错信息:
Can't reach database server at `CONNECTION_URL`:`3307`
方案2
datasource db { provider = "postgresql" url = "postgresql://USER:PASSWORD@localhost/DATABASE_NAME?host=CONNECTION_URL" }
报错信息:
Can't reach database server at `IP_ADDRESS`:`5432`
注:IP_ADDRESS为控制台显示的数据库正确公网IP,CONNECTION_URL格式为
/cloudsql/PROJ:REGION:INSTANCE
解决方法
1. 云端内置Auth Proxy连接(推荐)
Cloud Function部署后可直接通过Unix套接字连接CloudSQL,无需手动启动Auth Proxy,正确的Prisma配置如下:
datasource db { provider = "postgresql" url = "postgresql://USER:PASSWORD@localhost/DATABASE_NAME?host=/cloudsql/PROJ:REGION:INSTANCE&sslmode=require" }
host直接填写CloudSQL实例的连接路径/cloudsql/PROJ:REGION:INSTANCE- 追加
sslmode=require适配数据库强制SSL的要求
2. 必要权限与配置检查
- 确保Cloud Function的服务账号已分配
Cloud SQL Client角色 - 确认CloudSQL实例已启用私有IP连接(云端套接字连接依赖此配置)
- 若使用VPC连接,检查CloudSQL防火墙规则是否允许Cloud Function所在VPC的流量
3. 公网IP直接连接(备选)
若需通过公网IP直接连接,需配置完整的SSL参数,Prisma URL格式如下:
datasource db { provider = "postgresql" url = "postgresql://USER:PASSWORD@IP_ADDRESS:5432/DATABASE_NAME?sslmode=verify-full&sslrootcert=server-ca.pem&sslcert=client-cert.pem&sslkey=client-key.pem" }
- 将CloudSQL控制台下载的SSL证书文件(server-ca.pem、client-cert.pem、client-key.pem)放入Cloud Function部署包中
- 确保证书文件的路径配置正确,或通过环境变量指定路径
内容的提问来源于stack exchange,提问作者joana
相关产品推荐
相关产品推荐

