PlanetScale搭配Prisma配置报错:服务器要求使用SSL/TLS安全连接
解决PlanetScale本地代理下Prisma的SSL/TLS连接错误
问题背景
使用PlanetScale+Prisma搭建项目,本地代理连接数据库后执行npx prisma db push报错:
server does not allow insecure connections, client must use SSL/TLS
尝试修改DATABASE_URL的SSL参数(如rejectUnauthorized)无效,对数据库加密连接配置不熟悉。
解决方案
1. 确认本地代理状态
确保PlanetScale CLI代理正在运行,启动命令:
pscale connect <你的数据库名> <你的分支名>
启动成功后会看到类似输出:Proxying connection to <数据库名>/<分支名> at 127.0.0.1:3306。
2. 更新DATABASE_URL为本地代理地址
本地代理已处理与PlanetScale远程服务器的加密连接,因此本地连接无需SSL配置,将DATABASE_URL改为:
DATABASE_URL='mysql://root@127.0.0.1:3306/<你的数据库名>'
注意:本地代理连接不需要密码,直接用root用户名即可。
3. 验证Prisma Schema配置
确保schema.prisma中的datasource块仅引用环境变量,无额外SSL配置:
datasource db { provider = "mysql" url = env("DATABASE_URL") }
4. 重置Prisma缓存并执行推送
npx prisma generate npx prisma db push
原因说明
你之前使用的是PlanetScale远程连接URL,该URL需要SSL/TLS加密,但本地代理已经在后台完成了与远程服务器的加密握手,本地连接代理时不需要再配置SSL。直接用远程URL+本地代理会导致Prisma错误地尝试对本地连接启用SSL,从而触发报错。
内容的提问来源于stack exchange,提问作者TheMilkMan
相关产品推荐
相关产品推荐

