100 votes

Étrange PostgreSQL "valeur trop longue pour le type caractère varying(500)"

Je possède un schéma Postgres qui ressemble à ceci :

entrer la description de l'image ici

Le problème est que chaque fois que je sauvegarde un texte de plus de 500 caractères dans la colonne description, j'obtiens l'erreur :

valeur trop longue pour le type character varying(500)

Dans la documentation de Postgres, il est indiqué que le type texte peut avoir un nombre illimité de caractères.

J'utilise postgresql-9.1.

Cette table a été générée en utilisant Django 1.4 et le type de champ dans le modèle est TextField, si cela aide à expliquer davantage le problème.

Des idées sur pourquoi cela se produit et que puis-je faire pour le résoudre ?

0voto

Vivasvan Patel Points 2148

Ajout à la réponse de Scot S ici.


Pour Django ImageField ou FileField,

ajouter max_length dans le models.py a fonctionné pour moi.

img1 = models.ImageField(upload_to=user_directory_path,**max_length=500**)

0voto

C.K. Points 134

Dans mon cas :

j'ai migré un

CharField(max_length=1) en CharField(max_length=2)

puis enregistré des données. Ensuite, je veux migrer en arrière

La base de données contient déjà des données comme "sg" à l'intérieur.

juste les raccourcir temporairement résoudra cette erreur

Notez que si vous avez django-simple-history installé. allez là-bas et modifiez/supprimez également des données

Le journal des erreurs ne montre pas quelle table/champ, mais le varying(1) indique où vous devriez aller.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X