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

Django迁移Heroku出现django.db.utils.DataError varchar长度超限如何解决

报错原因与修复步骤

该报错的核心原因是 历史迁移文件中仍然存在将对应字段varchar长度设置为100000000的记录,Django的migrate命令会按顺序执行所有迁移文件,旧的超限配置会在你后续的长度修正迁移执行前就触发错误,和当前模型文件的配置没有关联。

具体修复步骤

  • 首先检查对应App下migrations/目录内的所有历史迁移文件,定位到最早将目标字段max_length设为100000000的迁移文件。
  • 根据你的项目场景选择对应处理方案:
    • 如果你还未在任何生产/正式环境执行过这批次的迁移,可以直接删除从该超限配置迁移开始到最新的所有迁移文件,重新执行python manage.py makemigrations生成全新的迁移文件,新生成的迁移会直接将目标字段长度设为1000,没有中间超限步骤,即可避免报错。
    • 如果你已经在其他环境执行过旧迁移、不能删除迁移历史,可以直接修改那份有超限配置的旧迁移文件,把对应字段的max_length参数从100000000改为1000,只要迁移的依赖关系没有变动,执行时就会按修改后的正确长度运行,不会触发超限错误。
  • 如果Heroku环境已经有过迁移执行记录,可以先运行heroku run python manage.py showmigrations查看迁移执行状态,定位到卡住的迁移节点后,也可通过heroku run python manage.py migrate --fake [你的App名] [对应迁移版本号]跳过已经实际生效的错误迁移步骤,再执行后续的正确迁移。

注意:Heroku提供的PostgreSQL服务对varchar类型的硬限制为10485760字节,任何超过该阈值的varchar长度定义都会直接抛出该错误,不要在模型字段中设置超出该限制的max_length值。

内容的提问来源于stack exchange,提问作者Si Thu Htun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:54:04