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

执行Django migrate时报OperationalError:audio_file字段长度超限

错误原因分析与解决思路

可能的错误来源

  • 全局配置干扰:检查你的settings.py是否设置了FILE_FIELD_MAX_LENGTH。这个参数默认值是100,如果被改成大于16383的数值(比如20000),哪怕你在models.py里没指定max_length,Django也会用这个全局值创建字段。而MySQL使用utf8mb4字符集时,varchar类型的最大长度就是16383(每个字符占4字节,受限于行大小65535字节),超过这个值就会触发报错。
  • 旧迁移文件残留:打开你最近生成的迁移文件(路径类似yourapp/migrations/00xx_xxxx.py),查看RadioFile模型中audio_file字段的定义,确认max_length是否被设成了超过16383的数值。如果之前的迁移文件没更新,哪怕修改了models.py,执行migrate时还是会沿用旧的配置。
  • 第三方代码修改默认值:有没有引入的第三方应用或自定义代码修改了FileField的默认max_length?部分库可能会全局修改字段的默认属性,导致你的audio_file被设置了过大的长度限制。

解决建议

  • 若为全局配置问题:在settings.py中将FILE_FIELD_MAX_LENGTH改回≤16383的值(比如你最初设置的200),然后重新执行python manage.py makemigrations生成新的迁移文件,再运行migrate。
  • 若为迁移文件问题:删除错误的迁移文件,重新生成正确的迁移(生产环境不建议直接删除,可手动修改迁移文件里的max_length值为合法范围),再执行migrate。
  • 若需存储更长路径:如果业务确实需要超过16383长度的文件路径,可以考虑将FileField改为TextField,修改模型后重新生成迁移并执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:25:42