(this is mostly copied/pasted from my comment on an eight-years-old issue 
here <https://code.djangoproject.com/ticket/6563>)

I cannot get the get_or_create operation to create non-existing object with 
nullable field, getting a `DataError: integer out of range` error.

The query goes like so: 
`Test.objects.get_or_create(**{u'device_preference__isnull': True, 
u'test_type': u'TextTest', u'master_id': 1234, u'testset_id__isnull': 
True})` where `device_preference` is a nullable PositiveIntegerField and 
`testset_id` is a ForeignKey.

Attached traceback shows that the issue happens on creation, I believe.

{{{
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/models/manager.py",
 
line 127, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/models/query.py",
 
line 407, in get_or_create
    return self._create_object_from_params(lookup, params)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/models/query.py",
 
line 439, in _create_object_from_params
    obj = self.create(**params)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/models/query.py",
 
line 348, in create
    obj.save(force_insert=True, using=self.db)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/models/base.py",
 
line 734, in save
    force_update=force_update, update_fields=update_fields)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/models/base.py",
 
line 762, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, 
update_fields)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/models/base.py",
 
line 846, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, 
raw)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/models/base.py",
 
line 885, in _do_insert
    using=using, raw=raw)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/models/manager.py",
 
line 127, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/models/query.py",
 
line 920, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/models/sql/compiler.py",
 
line 974, in execute_sql
    cursor.execute(sql, params)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/backends/utils.py",
 
line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/backends/utils.py",
 
line 64, in execute
    return self.cursor.execute(sql, params)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/utils.py", 
line 98, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File 
"/Users/mccc/Dev/venvs/tools/lib/python2.7/site-packages/django/db/backends/utils.py",
 
line 64, in execute
    return self.cursor.execute(sql, params)
DataError: integer out of range
}}}

I have not reopened the issue, just because, but I'd welcome any possible 
comment.
Thank you.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/15e8559a-dc36-492e-a49c-bd1d20135238%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to