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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:32:56