为何Prisma Introspection不兼容我的数据库枚举值命名?
疑问:
npx prisma db pull 时枚举值"0"被注释,命名问题出在哪? 我尝试对现有数据库执行Introspection生成Prisma Schema,执行命令:
npx prisma db pull
收到以下警告:
These enum values were commented out because their names are currently not supported by Prisma. Please provide valid ones that match [a-zA-Z][a-zA-Z0-9_]* using the `@map` attribute: - Enum: "orderstatus_type", value: "0"
不清楚命名哪里违规了,求解答。
问题根源
Prisma对枚举值的命名有硬性规则:必须以字母开头,后续可以跟字母、数字或下划线,对应正则表达式[a-zA-Z][a-zA-Z0-9_]*。你数据库里的枚举值"0"是纯数字开头,不符合这个规则,所以被自动注释。
解决步骤
手动修改生成的Prisma Schema,给这个枚举值起一个符合规则的内部名称,再用@map属性映射回数据库里的原始值"0"。示例如下:
enum orderstatus_type { // 把原来的"0"替换成合法名称,比如PENDING,用@map关联数据库值 PENDING @map("0") // 其他枚举值正常保留 // ... }
修改完成后,运行npx prisma generate更新Prisma客户端,之后在代码里使用orderstatus_type.PENDING,Prisma会自动映射到数据库中的"0"值。
内容的提问来源于stack exchange,提问作者w.k
相关产品推荐
相关产品推荐

