#32300: "BIGINT UNSIGNED value is out of range" occurs when substraction operation between PositiveBigIntegerField and BigIntegerField using F() -------------------------------------+------------------------------------- Reporter: jun | Owner: nobody Type: Bug | Status: closed Component: Database layer | Version: 3.1 (models, ORM) | Severity: Normal | Resolution: wontfix Keywords: mysql unsigned | Triage Stage: | Unreviewed Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -------------------------------------+------------------------------------- Changes (by Simon Charette):
* keywords: F expression => mysql unsigned * status: new => closed * resolution: => wontfix Comment: It can be worked around by using an explicit `Cast` expression {{{#!python qs.update(big_int_column=Cast(F('positive_big_int_column'), BigIntegerField()) - F('big_int_column')) }}} But you risk data corruption if `positive_big_int_column` is larger than what MySQL allows storing an a signed `bigint`. PostgreSQL and Oracle backends don't suffer from that as they implement `PositiveBigIntegerField` using a check constraint. [https://www.sqlite.org/datatype3.html SQLite simply have an integer type] without constraints at all so it's also not affected. I'll close as ''wontfix'' as it's really just a MySQL quirk due to the usage of `UNSIGNED` data types to implement `PositiveIntegerField` variants. I guess there isn't much that can be done until we drop support for MySQL < 8 since the latter introduces `CHECK` constraints support. -- Ticket URL: <https://code.djangoproject.com/ticket/32300#comment:2> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/066.193033e97a9ba2add6bf71e0d19b83f2%40djangoproject.com.