Django往mysql存数据Out of range value for column 'size' at row 1

代码:

class VideoSource(models.Model):
    classification = models.ForeignKey(Classification, null=True, on_delete=models.SET_NULL)
    create_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now_add=True)
    title = models.TextField(default="")
    describe = models.TextField(default="")
    url = models.CharField(max_length=255, db_index=True)
    key_name = models.CharField(max_length=255)
    covers = models.TextField(default="{}")
    size = models.IntegerField(default=0)

当我存size是3017072127这么大的时候就会报 DataError: (1264, "Out of range value for column 'size' at row 1")

查看源码发现

class IntegerField(Field):
    empty_strings_allowed = False
    default_error_messages = {
        'invalid': _("'%(value)s' value must be an integer."),
    }
    description = _("Integer")

    def check(self, **kwargs):
        errors = super(IntegerField, self).check(**kwargs)
        errors.extend(self._check_max_length_warning())
        return errors

    def _check_max_length_warning(self):
        if self.max_length is not None:
            return [
                checks.Warning(
                    "'max_length' is ignored when used with IntegerField",
                    hint="Remove 'max_length' from field",
                    obj=self,
                    id='fields.W122',
                )
            ]
        return []

    @cached_property
    def validators(self):
        # These validators can't be added at field initialization time since
        # they're based on values retrieved from `connection`.
        range_validators = []
        internal_type = self.get_internal_type()
        min_value, max_value = connection.ops.integer_field_range(internal_type)
        if min_value is not None:
            range_validators.append(validators.MinValueValidator(min_value))
        if max_value is not None:
            range_validators.append(validators.MaxValueValidator(max_value))
        return super(IntegerField, self).validators + range_validators
class BaseDatabaseOperations(object):
    """
    This class encapsulates all backend-specific differences, such as the way
    a backend performs ordering or calculates the ID of a recently-inserted
    row.
    """
    compiler_module = "django.db.models.sql.compiler"

    # Integer field safe ranges by `internal_type` as documented
    # in docs/ref/models/fields.txt.
    integer_field_ranges = {
        'SmallIntegerField': (-32768, 32767),
        'IntegerField': (-2147483648, 2147483647),
        'BigIntegerField': (-9223372036854775808, 9223372036854775807),
        'PositiveSmallIntegerField': (0, 32767),
        'PositiveIntegerField': (0, 2147483647),
    }
Django中,当出现"list index out of range"错误时,这通常是由于在模板中使用了带有多个小部件(widgets)的表单字段,但未提供足够的值导致的。通过查看Django的代码提交记录,可以看到有关解决这个问题的提交记录。具体来说,在Django 2.0.1版本和1.11.9版本中,开发者们添加了一个名为"spaceless"的标签来解决这个问题。此标签可以用于去除模板中的空格和换行符,以确保表单字段的值正确对应。 如果你遇到了"list index out of range"错误,你可以尝试以下解决方案之一: 1. 确保在使用多个小部件的表单字段时提供了足够的值。 2. 检查你的模板中是否使用了"spaceless"标签。 3. 确保你正在使用Django的最新版本,因为开发者们在不断改进和修复这类问题。 通过采取这些措施,你应该能够解决"django list index out of range"错误。如果问题仍然在,请参考Django的官方文档或在相关的开发者社区中寻求帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Django2集成xadmin详解-4-list index out of range报错追踪和处理](https://blog.csdn.net/yuhan963/article/details/79167743)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值