sql >> Base de Datos >  >> RDS >> PostgreSQL

El accesorio de Django falla, indicando DatabaseError:valor demasiado largo para la variación del carácter de tipo (50)

Actualización:el límite de 50 caracteres ahora es 255 en Django 1.8

--

Respuesta original:

Acabo de encontrar esto esta tarde, también, y tengo una solución (de algún tipo)

Esta publicación aquí implica que es un error de Django relacionado con la longitud del valor permitido para auth_permission. La investigación adicional respalda esa idea, al igual que este ticket de Django (aunque inicialmente está relacionado con MySQL).

Básicamente, se crea un nombre de permiso basado en el nombre detallado de un modelo más una cadena de permiso descriptiva, y eso puede desbordarse a más de los 50 caracteres permitidos en auth.models.Permission.name.

Para citar un comentario sobre el ticket de Django:

Los prefijos más largos para el valor de cadena en la columna auth_permission.name son "Puede cambiar" y "Puede eliminar", ambos con 11 caracteres. La longitud máxima de la columna es 50, por lo que la longitud máxima de Meta.verbose_name es 39.

Una solución sería piratear esa columna para admitir> 50 caracteres (idealmente a través de una migración Sur, digo, para que sea fácilmente repetible), pero la solución más rápida y confiable que se me ocurrió fue simplemente hacer mi definición verbose_name extra larga mucho más corto (de 47 caracteres en verbose_name a alrededor de 20). Todo funciona bien ahora.