Virtual Map
Virtual Map

Reputation: 15

Django Heroku DataError when populating database from script

I have made a script that reads xml file and populates database from it. When I run it locally it works with no problems. But when I run it on heroku it goes through and populates some data (exactly 6 objects), but then throws this error:

skripta_vnos.py is my populating script I run it in shell

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/app/skripta_vnos.py", line 97, in <module>
    dob.save()
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/base.py", line 806, in save
    force_update=force_update, update_fields=update_fields)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/base.py", line 836, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/base.py", line 922, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/base.py", line 961, in _do_insert
    using=using, raw=raw)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/query.py", line 1063, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 1099, in execute_sql
    cursor.execute(sql, params)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/utils.py", line 80, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
DataError: value too long for type character varying(100)

my model looks like this:

class Supply(models.Model):
    name = models.CharField(max_length=255) 
    maticna = models.CharField(max_length=255)
    organ = models.CharField(max_length=255, null=True, blank=True)
    pos = models.CharField(max_length=255, null=True, blank=True)
    city = models.CharField(max_length=255, null=True, blank=True)
    postn= models.CharField(max_length=255, null=True, blank=True)
    hisna = models.CharField(max_length=255, null=True, blank=True)

    email = models.CharField(max_length=255, null=True, blank=True)

    def __str__(self):
        return self.name.encode("utf-8")

    def get_absolute_url(self):
        return reverse('supply-detail', args=[str(self.id)])

Upvotes: 1

Views: 137

Answers (2)

Super Cokoloko
Super Cokoloko

Reputation: 90

Like shlomta1 said your string is larger than max length. Try running heroku run python manage.py migrate so you apply those max lengths to your heroku database too

Upvotes: 0

shlomta1
shlomta1

Reputation: 148

You getting this error because one of your strings is larger than the max length. If its working locally you probably changed the max length and didn't migrate your changes on Heroku.

Upvotes: 2

Related Questions