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

如何修复Django迁移PostgreSQL后注册用户的数据长度错误

解决Django迁移PostgreSQL后注册用户报varchar(30)过长错误

你修改slug字段长度后问题依旧,大概率是没定位到真正触发报错的字段,或者修改未同步到数据库,按以下步骤排查:

  • 定位真正超长的字段:
    报错提示的varying(30)不一定对应slug字段。开启Django的SQL日志,查看注册时执行的INSERT语句,就能找到哪个字段的值超过了30字符限制:
    在settings.py中添加日志配置:

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'console': {'class': 'logging.StreamHandler'},
        },
        'loggers': {
            'django.db.backends': {
                'level': 'DEBUG',
                'handlers': ['console'],
            },
        },
    }
    

    重新执行注册操作,控制台会输出完整SQL语句,直接对应到长度限制为30的字段。

  • 确认修改已同步到数据库:
    修改models.py字段后,必须执行以下命令生成并应用迁移,否则数据库字段长度还是旧的30:

    python manage.py makemigrations
    python manage.py migrate
    
  • 检查第三方应用的字段限制:
    如果使用了用户扩展类(比如django-allauth、自定义用户模型),第三方库自带的某些字段可能默认长度为30,需要在自定义模型中覆盖这些字段的长度设置。

  • 直接验证数据库字段结构:
    用PostgreSQL客户端(如psql)连接数据库,查看用户相关表的结构,比如默认用户表执行:

    \d auth_user
    

    找到类型为character varying(30)的字段,确认是否和代码中的定义一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:09:24