J'ai un site Web Django exécutant un mini système de gestion de la sécurité que nous avons construit en interne il y a des années, il utilise postgresql. Lors de l'enregistrement d'un titre simple et d'un paragraphe de texte, l'erreur suivante apparaît:
value too long for type character varying(100)
Ce qui est étrange, c’est qu’aucune colonne ne varie (100), elles sont toutes 200 ou 250, même celles par défaut de Django ont été modifiées de 100 à 200 en raison d’un ticket rouvert mentionné ici
Est-ce que quelqu'un connaît une solution à ce problème?
Je peux parier que vous avez un SlugField sans longueur prédéfinie? Définissez-le sur 255 et migrez
J'ai également eu ce problème lors de l'utilisation d'un champ de fichier et me gratifiais la tête pendant un moment. Bien entendu, les instances FileField par défaut sont créées avec une limite de 100 caractères.
https://docs.djangoproject.com/en/dev/ref/models/fields/#filefield
Ceci est un message d'erreur de Postgres et non de Django.
Vous semblez avoir changé la longueur du champ dans le models.py
, mais cela ne change pas la longueur de la base de données créée lorsque vous avez créé un manage.py syncdb
.
Vous devez modifier directement la longueur du champ dans la base de données.
La réponse de Michael Samoylov m'a orienté dans la bonne direction. J'ai eu la même erreur, sauf que c'était avec un FileField.
Les champs ont une longueur maximale, même si vous n'avez pas défini explicitement une longueur maximale. Augmentez la valeur de sorte que vos données correspondent pour éviter l'erreur.
Dans mon cas, les données étaient trop volumineuses pour être raisonnablement stockées dans la base de données. J'ai eu recours à l'enregistrement de mon fichier sur le disque, puis en enregistrant le chemin du fichier dans la base de données.
Je me rends compte que la question a déjà été résolue, mais pour les autres qui viennent ici lorsqu'ils cherchent le message d'erreur:
Dans mon cas, le problème était que le nom de ma table dépassait 50 caractères. Apparemment, ce n'est pas autorisé. Changer le nom de la table a résolu le problème.
Lisez plus ici: https://code.djangoproject.com/ticket/18959
Si ce n'est pas SlugField
, FileField
ou tout autre champ mentionné ici, revenez à l'endroit où la migration s'est bloquée dans le terminal. Pour moi, c'était AddField
Bonne conversation.
Si vous utilisez Django et que rien de tout cela ne fonctionne. essayez de supprimer tous les fichiers de migration et à nouveau en cours d'exécution
python manage.py makemigrations
puis
python manage.py migrate
Django 2.1
J'ai rencontré ce problème lors du passage de sqlite3 à postgresql . Supprimez les fichiers de migration du dossier de migration de chaque application, à l'exception de __init__.py Relancez ensuite la migration.
(venv)myapp$python manage.py makemigrations
(venv)myapp$python manage.py migrate
(venv)myapp$python manage.py runserver