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

T3栈Next.js应用中Prisma连接SQL Server的DATABASE_URL验证错误求助

T3栈Next.js应用中SQL Server DATABASE_URL的Zod验证错误解决

错误原因

你使用的Zod验证规则里,z.string().url()要求字符串必须符合标准URL规范(比如scheme://host/path?query的结构),但SQL Server的连接字符串是ODBC格式,用分号分隔参数(如sqlserver://127.0.0.1:1433;database=demo;...),这种格式不满足Zod的URL验证逻辑,因此触发Invalid url错误。

你提到的Azure SQL连接字符串能正常工作,是因为Zod的url()对部分带分号的字符串可能存在误判,但本质上SQL Server的连接字符串都不属于标准URL结构,不能依赖url()验证。

解决方法

1. 修改Zod环境变量验证规则

移除url()约束,换成适合SQL Server连接字符串的验证逻辑,示例如下:

z.string()
  .nonempty() // 确保连接字符串非空
  .refine(
    (str) => str.startsWith("sqlserver://"), // 校验是否为SQL Server连接字符串
    "Invalid SQL Server connection string"
  )
  .refine(
    (str) => !str.includes("YOUR_MYSQL_URL_HERE"),
    "You forgot to change the default URL"
  )

如果不需要额外格式校验,也可以简化为:

z.string()
  .nonempty()
  .refine(
    (str) => !str.includes("YOUR_MYSQL_URL_HERE"),
    "You forgot to change the default URL"
  )

2. 确认Prisma配置正确

在prisma/schema.prisma中,确保数据源的provider设置为sqlserver:

datasource db {
  provider = "sqlserver"
  url      = env("DATABASE_URL")
}

3. 本地连接字符串的注意事项

  • 确认本地SQL Server服务在127.0.0.1:1433端口运行
  • trustServerCertificate=true仅适合本地开发(跳过证书验证),生产环境建议配置合法SSL证书并将该参数设为false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:15:03