Skip to content

Manually save the instance raises DataError: value too long for type character varying(42) #96

@elcolie

Description

@elcolie

django==1.11.7
django-geoposition==0.3.0

models

class Company(models.Model):
    ...
    position = GeopositionField()

In the shell I did

comp = Company(name='El Corporation', number='111', country='TH', position=GeopositionField(37, -112))

It is fine except when I commit to database

---------------------------------------------------------------------------
DataError                                 Traceback (most recent call last)
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/backends/utils.py in execute(self, sql, params)
     64             else:
---> 65                 return self.cursor.execute(sql, params)
     66

DataError: value too long for type character varying(42)


The above exception was the direct cause of the following exception:

DataError                                 Traceback (most recent call last)
<ipython-input-14-7c47c29d69ab> in <module>()
----> 1 comp.save()

~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/base.py in save(self, force_insert, force_update, using, update_fields)
    806
    807         self.save_base(using=using, force_insert=force_insert,
--> 808                        force_update=force_update, update_fields=update_fields)
    809     save.alters_data = True
    810

~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/base.py in save_base(self, raw, force_insert, force_update, using, update_fields)
    836             if not raw:
    837                 self._save_parents(cls, using, update_fields)
--> 838             updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
    839         # Store the database on which the object was saved
    840         self._state.db = using

~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/base.py in _save_table(self, raw, cls, force_insert, force_update, using, update_fields)
    922
    923             update_pk = meta.auto_field and not pk_set
--> 924             result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
    925             if update_pk:
    926                 setattr(self, meta.pk.attname, result)

~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/base.py in _do_insert(self, manager, using, fields, update_pk, raw)
    961         """
    962         return manager._insert([self], fields=fields, return_id=update_pk,
--> 963                                using=using, raw=raw)
    964
    965     def delete(self, using=None, keep_parents=False):

~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/manager.py in manager_method(self, *args, **kwargs)
     83         def create_method(name, method):
     84             def manager_method(self, *args, **kwargs):
---> 85                 return getattr(self.get_queryset(), name)(*args, **kwargs)
     86             manager_method.__name__ = method.__name__
     87             manager_method.__doc__ = method.__doc__

~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/query.py in _insert(self, objs, fields, return_id, raw, using)
   1074         query = sql.InsertQuery(self.model)
   1075         query.insert_values(fields, objs, raw=raw)
-> 1076         return query.get_compiler(using=using).execute_sql(return_id)
   1077     _insert.alters_data = True
   1078     _insert.queryset_only = False

~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/sql/compiler.py in execute_sql(self, return_id)
   1105         with self.connection.cursor() as cursor:
   1106             for sql, params in self.as_sql():
-> 1107                 cursor.execute(sql, params)
   1108             if not (return_id and cursor):
   1109                 return

~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/backends/utils.py in execute(self, sql, params)
     78         start = time()
     79         try:
---> 80             return super(CursorDebugWrapper, self).execute(sql, params)
     81         finally:
     82             stop = time()

~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/backends/utils.py in execute(self, sql, params)
     63                 return self.cursor.execute(sql)
     64             else:
---> 65                 return self.cursor.execute(sql, params)
     66
     67     def executemany(self, sql, param_list):

~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/utils.py in __exit__(self, exc_type, exc_value, traceback)
     92                 if dj_exc_type not in (DataError, IntegrityError):
     93                     self.wrapper.errors_occurred = True
---> 94                 six.reraise(dj_exc_type, dj_exc_value, traceback)
     95
     96     def __call__(self, func):

~/.pyenv/versions/poink/lib/python3.6/site-packages/django/utils/six.py in reraise(tp, value, tb)
    683             value = tp()
    684         if value.__traceback__ is not tb:
--> 685             raise value.with_traceback(tb)
    686         raise value
    687

~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/backends/utils.py in execute(self, sql, params)
     63                 return self.cursor.execute(sql)
     64             else:
---> 65                 return self.cursor.execute(sql, params)
     66
     67     def executemany(self, sql, param_list):

DataError: value too long for type character varying(42)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions