首页 > 解决方案 > Django 错误:确保此值最多包含 5 个字符(它有 6 个)

问题描述

class User(AbstractBaseUser, TimeStampedModel):
    objects = UserManager()

    GENDER_MALE = "male"
    GENDER_FEMALE = "female"
    GENDER_OTHER = "other"

    GENDER_CHOICES = (
        (GENDER_MALE, "Male"),
        (GENDER_FEMALE, "Female"),
        (GENDER_OTHER, "Other"),
    )

    email = models.EmailField(unique=True)
    username = models.CharField(max_length=20, unique=True)
    gender = models.CharField(max_length=6, choices=GENDER_CHOICES)

它具有与上面相同的代码。

该服务正在使用 AWS 的 EB 分发,并出现错误“确保此值最多包含 5 个字符(它有 6 个)”。当用户将性别设置为女性时发生。

原代码确认出错是因为gender的maximum_length设置为5,修正为6的代码就是上图所示的代码。

但是,即使在 makemigrations - migrate - eb deploy 之后,服务中也会出现相同的错误。“确保此值最多包含 5 个字符(它有 6 个)。” 但是如果你在本地运行服务器,它可以正常工作而不会出错。

我认为连接到eb的postgresql不适用于迁移,这导致了我认为的错误。但是,通过eb日志查看迁移过程后,我们能够确认它是正常应用的,没有错误。

我错过了什么,我应该看什么?请多多指教。

+

现在还有另一个变化。在服务服务器上正确应用了相同的分发。不会产生错误。但是,即使是同一个发行版,开发服务器也会产生错误。我们应该检查 aws eb 和 rds 之间的连接吗?我应该检查什么?

标签: amazon-web-servicesdjango-rest-frameworkamazon-elastic-beanstalk

解决方案


我可以想到两个选择:

  1. 您的数据库不是最新的。直接连接数据库并检查django_migrations
  2. 您的代码未更新。通过 ssh 连接并检查部署的代码是否符合您的预期。

推荐阅读