web-dev-qa-db-fra.com

Types de données dans Ecto - "valeur trop longue pour les caractères de type variables (255)"

ERREUR 22001 (string_data_right_truncation): valeur trop longue pour le type Caractère variable (255)

Je comprends (et présume) qu’une chaîne serait limitée à un certain nombre de caractères; Cependant, je ne suis pas sûr du type qui conviendrait le mieux pour ce scénario.

Quel type devrais-je utiliser pour une section "contenu" d'un blog dans le cadre Phoenix?

Les données seront des paragraphes de texte et ne pourront être limitées en taille. 

Merci d'avance.

13
Andrew Hendrie

L'erreur que vous obtenez provient de la base de données sous-jacente où le type de colonne est défini sur varchar, qui est créé par défaut lorsque vous spécifiez le type de colonne en tant que string dans une migration.

Pour stocker une chaîne de longueur variable de plus de 255 caractères, vous devez spécifier le type de colonne sous la forme text dans la migration. Vous pouvez convertir le type de la colonne existante en text en utilisant une migration telle que:

alter table(:posts) do
  modify :content, :text
end

Le type de champ dans la section de schéma du modèle doit rester string:

schema "posts" do
  field :content, :string
end
23
Navin Peiris

Étant donné la liste des types primitifs ici je ne pense pas qu’il existe un type primitif qui réponde vraiment à vos besoins. Cependant, vous pouvez créer un type personnalisé (plus sur cela ici ) et je pense que ce serait votre meilleur pari dans ce cas. En supposant que vous utilisiez PostgreSQL (vous ne mentionnez pas votre base de données sous-jacente réelle), vous souhaiterez probablement créer un type personnalisé avec le type bytea data.

0
Onorio Catenacci