Opened 10 years ago

Closed 9 years ago

#3910 closed (duplicate)

DataError (Data too long for column) in admin caused by html entities overflowing db field size

Reported by: miguel.carboni@… Owned by: nobody
Component: contrib.admin Version: 0.96
Severity: Keywords: admin, DataError
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

Description (last modified by Malcolm Tredinnick)

Hi! First of all, django is great.
I have found the following Model:

class Story(models.Model):
        autor = models.CharField(maxlength=50)
        titulo = models.CharField(maxlength=100)
        texto = models.CharField(maxlength=200)

        def __str__(self):
                return self.titulo

        class Admin:
                list_filter = ['autor']
                list_display = ['titulo', 'autor' ]

The model is trivial, it's not the actual.
The problem I found is that if I type í or á in the "titulo" textfield within the admin and save I got the following screen:

DataError at /admin/polls/story/2/
(1406, "Data too long for column 'message' at row 1")
Request Method: POST 
Request URL: http://localhost:8000/admin/polls/story/2/ 
Exception Type: DataError 
Exception Value: (1406, "Data too long for column 'message' at row 1") 
Exception Location: c:\python25\lib\site-packages\MySQL_python-1.2.2-py2.5-win32.egg\MySQLdb\connections.py in defaulterrorhandler, line 35 

It depends on the size of the "titulo", I guess the problem is that when it serialize "í" it turns into "í" then thes size of the verchar gets bigger than the original.

Regards!
Miguel S. Carboni
developer

Change History (5)

comment:1 Changed 10 years ago by Simon G. <dev@…>

Component: Database wrapperAdmin interface
Keywords: admin DataError added
Summary: Problems with admin and spanish stressesDataError (Data too long for column) in admin caused by html entities overflowing db field size
Triage Stage: UnreviewedAccepted

Formatted model:

class Story(models.Model):
	autor = models.CharField(maxlength=50)
	titulo = models.CharField(maxlength=100)
	texto = models.CharField(maxlength=200)

	def str(self):
		return self.titulo

	class Admin:
		list_filter = autor
		list_display = ['titulo', 'autor' ]

comment:2 Changed 10 years ago by Malcolm Tredinnick

Description: modified (diff)

Fixed summary formatting.

comment:3 Changed 9 years ago by James Bennett

Resolution: worksforme
Status: newclosed

I suspect that either the Unicode merge fixed this, or your database and Django aren't thinking in the same charset. Please re-open if you can still reproduce on current trunk.

comment:4 Changed 9 years ago by James Bennett

Resolution: worksforme
Status: closedreopened

comment:5 Changed 9 years ago by James Bennett

Resolution: duplicate
Status: reopenedclosed

Re-closing as a duplicate of #4336.

Note: See TracTickets for help on using tickets.
Back to Top