Opened 3 years ago

Last modified 3 years ago

#32300 closed Bug

"BIGINT UNSIGNED value is out of range" occurs when substraction operation between PositiveBigIntegerField and BigIntegerField using F() — at Version 1

Reported by: jun Owned by: nobody
Component: Database layer (models, ORM) Version: 3.1
Severity: Normal Keywords: mysql unsigned
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by jun)

  • Environment
    MacOS 10.15.3
    Django 3.1 
    MySQL 5.7.32
    mysqlclient==2.0.1
    
  • Model
    class SomeModel(models.Model):
        positive_big_int_column = models.PositiveBigIntegerField(default=0)
        big_int_column = models.BigIntegerField(default=0)
    
  • Test
    SomeModel.objects.create(positive_big_int_column=100, big_int_column=300)
    qs = SomeModel.objects.filter(positive_big_int_column=100)
    qs.update(big_int_column=F('positive_big_int_column') - F('big_int_column'))
    
  • Expected query

UPDATE SomeModel SET big_int_column=(100-300)

  • Error

IntegrityError: (1690, "BIGINT UNSIGNED value is out of range in blabla")

Change History (1)

comment:1 by jun, 3 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top