如何在Prisma中禁用非空约束及取消字符集自动配置?
解决方案
1. 移除NOT NULL约束
Prisma中String类型默认标记为必填,对应SQL的NOT NULL约束。要让字段允许为空,只需在字段类型后添加?,将其设为可选字段:
model Trackings { deliverStatus String? @default("") @db.VarChar(255) @@map(name: "trackings") }
修改后重新执行npx prisma db push,生成的SQL会移除NOT NULL约束,允许字段值为NULL。
2. 移除字符集与排序规则配置
Prisma默认会为MySQL字符串字段添加utf8mb4字符集(支持4字节emoji等字符)及对应排序规则。要阻止生成该配置,可通过以下两种方式处理:
方式一:依赖数据库默认配置
确保你的MySQL数据库实例或目标表的默认字符集、排序规则是你需要的。当Prisma检测到数据库默认配置与自身默认推荐匹配时,不会在生成的SQL中显式指定字符集和排序规则。方式二:全局指定字符集配置
在Prisma Schema的datasource块中,显式设置charset和collate为你需要的数据库默认值,Prisma会使用该全局配置,不再在单个字段上重复生成字符集相关语句:
datasource db { provider = "mysql" url = env("DATABASE_URL") charset = "utf8" collate = "utf8_general_ci" }
注意:如果业务需要支持emoji等特殊字符,推荐保留
utf8mb4字符集,它是utf8的超集,兼容性更强。
内容的提问来源于stack exchange,提问作者angry kiwi
相关产品推荐
相关产品推荐

