Prisma操作MSSQL报Column Too Long如何配置长文本字段
问题原因
Prisma 针对 MSSQL 数据库的默认String类型,会自动映射为nvarchar(1000),字段最大长度仅支持1000个字符,存储长HTML字符串时自然会触发字段长度超限报错。
MSSQL 长文本支持说明
MSSQL 原生支持varchar(max)、nvarchar(max)类型,单字段最大可存储2GB内容,完全覆盖长HTML字符串的存储场景:
varchar(max):存储非Unicode编码文本,适合纯英文/ASCII字符内容nvarchar(max):存储Unicode编码文本,支持多语言、特殊字符,存带中文、特殊符号的HTML优先选这个
注意:MSSQL 旧版的
text、ntext类型已被微软标记为将在后续版本弃用,不推荐使用。
Prisma 配置方法
只需要在content字段上添加对应类型映射注解,指定使用max长度的字符串类型即可,修改后的Post模型示例:
model Post { // 其余字段保持原有配置不变 content String? @db.NVarChar("max") // 其余字段保持原有配置不变 }
如果你的HTML内容全是ASCII字符、不需要存储多语言内容,也可以替换为@db.VarChar("max")获得更小的存储开销。
生效步骤
- 修改完schema文件后,执行以下命令生成数据库迁移并应用:
npx prisma migrate dev --name alter_post_content_to_long_type
- 等待迁移执行完成后,Prisma Client会自动更新,后续即可正常往content字段写入长HTML内容,不会再触发长度超限报错。
如果是已有线上数据库不方便执行迁移,也可以手动在MSSQL中把content字段类型修改为
nvarchar(max),再执行npx prisma generate更新本地客户端类型映射即可。
内容的提问来源于stack exchange,提问作者Alvin Stefanus
相关产品推荐
相关产品推荐

