2012-01-27 19 views
24

Tengo un sitio web de Django que ejecuta un mini CMS que hemos creado internamente hace años, está usando postgresql. Al guardar un simple título y un párrafo de texto me sale el siguiente error:DatabaseError: value too long for type character variable (100)

value too long for type character varying(100) 

Lo extraño es, no una sola columna es variable (100) todos ellos son 200 o 250, incluso los que Django por defecto tienen ha cambiado de 100 a 200 debido a un re-opened ticket mentioned here

¿Alguien sabe de una solución a este problema?

Respuesta

37

Puedo apostar dinero que tiene un SlugField sin longitud predefinida? Configúrelo en 255 y migre

+0

Lo tienes. No creí que este fuera el problema porque Django las almacena de forma predeterminada como variable (50) pero una de las dependencias del proyecto tenía un modelo que variaba (100) para los campos de slug; Lo pasé por alto. – JeffC

+2

@michael que fue impresionante. Estaba bastante atrapado. – harristrader

+0

¿Así que slug = models.SlugField (max_length = 255), y luego migrar en heroku? –

13

Este es un mensaje de error de Postgres y no django.

Parece que ha cambiado la longitud del campo en el models.py, pero eso no cambia la longitud de la base de datos que se creó al hacer un manage.py syncdb.

Tiene que modificar la longitud del campo en la base de datos, directamente.

+2

No los cambié solo en los modelos. Corrí hacia el sur como lo hacemos normalmente cuando cambiamos las propiedades de DB y desde entonces hemos migrado, comprobamos todas las tablas manualmente en postgres y no hay remanentes de 100 en ningún lado. Estoy confundido. – JeffC

0

que dan cuenta de la pregunta ya está contestada pero para otros que vienen aquí cuando se busca el mensaje de error:

En mi caso, el problema era que mi nombre de la tabla supera los 50 caracteres. Aparentemente esto no está permitido. Cambiar el nombre de la tabla resolvió el problema.

Leer más aquí: https://code.djangoproject.com/ticket/18959

0

He tenido un problema similar con django-autoslugfield que estaba usando un paquete similar y luego cambió a django-autoslugfield

que estaba recibiendo este error: value too long for type character varying(50)

a pesar del hecho de que mi models.py tenía:

slug = AutoSlugField(max_length=255, populate_from='name', unique=True)

y en mi db el que el tipo era character varying 255

vez quito max_length=255 del campo es decir

slug = AutoSlugField(populate_from='name', unique=True)

entonces funcionó bien respuesta

0

Michael Samoylov 's me señaló en la dirección correcta. Tuve el mismo error, excepto que fue con un FileField.

Los campos tienen max_length, incluso si no ha establecido explícitamente un max_length. Aumente el valor para que sus datos se ajusten para evitar el error.

En mi caso, los datos eran demasiado grandes para almacenarlos razonablemente en la base de datos. Recurrí a guardar mi archivo en el disco y luego a guardar la ruta del archivo en la base de datos.

Cuestiones relacionadas