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

Cloud Run能否连接强制SSL/TLS的PlanetScale数据库?

解决Cloud Run上Prisma连接PlanetScale的SSL/TLS错误

可能的原因及解决方案

1. 环境变量中DATABASE_URL的SSL参数转义问题

本地环境中直接使用ssl={"rejectUnauthorized":true}可正常解析,但Cloud Run的环境变量会对引号等特殊字符处理异常,导致SSL配置未生效。

解决方法:
将SSL参数进行URL编码后放入DATABASE_URL:
原参数ssl={"rejectUnauthorized":true}编码后为ssl=%7B%22rejectUnauthorized%22%3Atrue%7D
最终DATABASE_URL格式:

mysql://<USER>:<PASSWORD>@<HOST>:3306/<DB_NAME>?ssl=%7B%22rejectUnauthorized%22%3Atrue%7D

2. 直接在Prisma Schema中配置SSL(推荐)

避免URL参数转义问题,直接在schema.prisma的datasource块中指定SSL配置:

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
  ssl      = { rejectUnauthorized = true }
}

此时DATABASE_URL无需包含SSL相关参数,保持基础格式即可:

mysql://<USER>:<PASSWORD>@<HOST>:3306/<DB_NAME>

3. 手动指定CA证书(证书信任链异常时)

如果Cloud Run环境无法识别PlanetScale的SSL证书,可手动添加Mozilla根证书:

  1. 下载Mozilla根证书文件(ca-cert.pem),放入项目根目录
  2. 在Prisma Schema中配置:
datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
  ssl      = {
    rejectUnauthorized = true,
    ca = file("./ca-cert.pem")
  }
}

4. 检查Cloud Run网络配置

若你自定义了VPC连接器,需确保配置允许访问PlanetScale的3306端口。默认情况下Cloud Run允许所有出站流量,此步骤仅针对自定义网络配置的场景。

验证步骤

  1. 修改配置后重新构建容器镜像并部署到Cloud Run
  2. 查看Cloud Run日志,确认SSL连接错误是否消失
  3. 若问题仍存在,尝试用Docker本地运行容器,复现问题排查镜像构建过程中的配置遗漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:35:27