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

使用Prisma向SQL Server插入docx文件时报‘列值过长’错误求助

问题分析与解决方案

可能的原因及对应解决方法

1. 文件名长度超出字段限制

你的File模型中fileName字段定义为@db.NVarChar(100),如果上传的docx文件名(含路径)长度超过100字符,就会触发"字段值过长"的错误。而SQL Server返回的错误提示未明确列名,容易让你误以为是content字段的问题。

解决步骤:

  • 检查当前上传的docx文件名长度,确认是否超过100字符;
  • 如果需要支持更长文件名,修改File模型的fileName定义,比如调整为@db.NVarChar(255),然后重新执行prisma migrate dev更新数据库结构。

2. Prisma 4.2.1版本的SQL Server适配bug

Prisma 4.2.1属于较早的4.x版本,存在一些针对SQL Server二进制数据处理的已知问题,尤其是对特定格式的二进制文件(比如docx的OLE复合文档结构)可能存在兼容性问题。

解决步骤:

  • 升级Prisma到4.x系列的最新稳定版本(比如4.16.x及以上),执行命令:
    npm install prisma@latest
    npx prisma generate
    
  • 重新测试docx文件上传功能。

3. 二进制数据的编码/转换错误

检查你的fileParams函数,确认是否正确处理了docx文件的Buffer数据:

  • 避免将Buffer错误转换为字符串(比如使用toString('utf8'))再转回Buffer,这会破坏docx的二进制结构,导致数据体积异常或格式错误;
  • 确保fileParams返回的content是原始的文件Buffer,没有经过多余的编码处理。

验证方法:
在fileParams函数中添加日志,打印content的长度和类型,确认和原始文件大小一致:

function fileParams(file) {
  console.log('File buffer length:', file.content.length);
  console.log('File buffer type:', typeof file.content);
  // 其他处理逻辑
  return {
    fileName: file.name,
    content: file.content
  };
}

内容的提问来源于stack exchange,提问作者Dyvd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:31:09