Prisma Schema部署至PlanetScale时执行db push报错求助
解决Prisma部署到PlanetScale时
npx prisma db push的SQL语法错误 错误原因
报错的核心问题出在User表的name字段默认值定义上:
- 当前Prisma Schema生成的SQL中,
name字段的默认值写为DEFAULT id,而PlanetScale基于Vitess运行,Vitess要求引用同表列作为默认值时必须用括号包裹列名,即格式应为DEFAULT (id)。 - 本地MySQL允许直接用列名作为默认值,所以本地执行无问题,但PlanetScale的Vitess语法校验更严格,因此触发了1064语法错误。
解决方案
修改Prisma Schema中User模型的name字段定义:
原代码
model User { id String @id @default(cuid()) name String? @default(dbgenerated("id")) // ... 其他字段 }
修改后代码
model User { id String @id @default(cuid()) name String? @default(dbgenerated("(id)")) // ... 其他字段 }
修改完成后,重新执行部署命令:
npx prisma db push
调整后生成的SQL会将name字段的默认值改为DEFAULT (id),符合Vitess的语法要求,即可正常完成表创建操作。
内容的提问来源于stack exchange,提问作者csharpdev
相关产品推荐
相关产品推荐

