升级Prisma至3.0.2后执行prisma db push报P1017服务端关闭连接错误
Prisma 3.0.2 执行
prisma db push报P1017错误解决方案 出现该问题的核心原因是Prisma 3.0.0~3.0.2版本的已知缺陷:迁移类命令使用的独立连接逻辑和2.x版本存在差异,默认连接超时阈值设置过短,当Postgres配置了短连接超时规则、SSL连接校验时,就会出现业务运行时的增删改查请求正常,但prisma db push等迁移命令连接被服务端主动断开的情况。
可按以下优先级尝试修复:
- 优先升级Prisma版本
官方在3.1.0版本中已经修复了该bug,直接将package.json中prisma和@prisma/client的版本号修改为≥3.1.0,重新安装依赖后再次执行prisma db push即可。 - 调整数据库连接字符串参数(暂无法升级版本时使用)
在你的DATABASE_URL连接串末尾追加连接超时参数,延长连接等待时长:
原连接串无查询参数时添加:?connect_timeout=30&pool_timeout=30
原连接串已有查询参数时添加:&connect_timeout=30&pool_timeout=30
示例:postgresql://user:pass@127.0.0.1:5432/mydb?schema=public&connect_timeout=30&pool_timeout=30 - 本地开发环境额外适配
如果你使用的是本地无SSL配置的Postgres实例,Prisma 3.0默认优先尝试SSL连接也会触发该错误,可在连接串中追加&sslmode=prefer参数兼容非SSL连接场景。
验证修复效果时,可以先执行prisma -v确认版本配置正确,再执行迁移命令。
内容的提问来源于stack exchange,提问作者Ghyath Darwish
相关产品推荐
相关产品推荐

