django - mac - elephantsql
DatabaseError: valor demasiado largo para el tipo de carácter que varía(100) (7)
¿Puedo apostar dinero que tiene un SlugField sin una longitud predefinida? Establézcalo en 255 y migre
Tengo un sitio web de Django que ejecuta un mini CMS que hemos construido internamente hace años, está usando postgresql. Al guardar un título simple y un párrafo de texto, aparece el siguiente error:
value too long for type character varying(100)
Lo extraño es que ni una sola columna está variando (100), todas son 200 o 250, incluso las de Django predeterminadas han cambiado de 100 a 200 debido a un boleto reabierto que se menciona aquí.
¿Alguien sabe de una solución a este problema?
Este es un mensaje de error de Postgres y no de django.
Parece que has cambiado la longitud del campo en los models.py
, pero eso no cambia la longitud de la base de datos que se creó cuando hiciste un manage.py syncdb
.
Tienes que modificar la longitud del campo en la base de datos, directamente.
La respuesta de me indicó la dirección correcta. Tuve el mismo error, excepto que fue con un FileField.
Los campos tienen un 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 guardar la ruta del archivo en la base de datos.
Me doy cuenta de que la pregunta ya está respondida, pero para otros que vienen aquí cuando buscan el mensaje de error:
En mi caso, el problema fue que el nombre de mi tabla superaba los 50 caracteres. Aparentemente esto no está permitido. Cambiar el nombre de la tabla resolvió el problema.
Lea más aquí: https://code.djangoproject.com/ticket/18959
Si está utilizando Django, y nada de esto está funcionando. Intenta eliminar todos los archivos de migración y vuelve a ejecutar
python manage.py makemigrations
entonces
python manage.py migrate
También tuve este problema al usar un campo de archivos y me estaba rascando la cabeza por un tiempo. Por supuesto, las instancias predeterminadas de FileField se crean con un límite de 100 caracteres.
https://docs.djangoproject.com/en/dev/ref/models/fields/#filefield
Tuve un problema similar con django-autoslugfield. Estaba usando un paquete similar y luego cambié a django-autoslugfield.
Recibí este error: el value too long for type character varying(50)
A pesar de que mis modelos.py tenían:
slug = AutoSlugField(max_length=255, populate_from=''name'', unique=True)
y en mi db el tipo era el character varying 255
una vez que elimine max_length=255
del campo, es decir
slug = AutoSlugField(populate_from=''name'', unique=True)
entonces funcionó bien