MySQL VARCHAR limite de taille
Si j'ai une colonne dans la table avec un champ de type VARCHAR(15)
et si j'essaie d'insérer des données de longueur 16, MySQL donne un message d'erreur indiquant
Data too long for column 'testname' at row 1
Personne ne sait pourquoi les champs VARCHAR dans MySQL prendre de longueur fixe? Aussi combien d'octets, un champ de type VARCHAR prendre par enregistrement en fonction de la taille de la donnée?
Faux 'til vous faire!
OriginalL'auteur MySQL DBA | 2009-10-20
Vous devez vous connecter pour publier un commentaire.
Si vous définissez une colonne à
varchar(15)
les octets maximum autorisé est de 15. Vous ne pouvez donc pas passer plus de 15 caractères, sans modification de la colonne à l'appui de plus de 15. Si vous stockez un 4 chaîne de caractères, il doit utiliser uniquement autour de 4 octets sur une possibilité de 15, alors que si vous avez utiliséchar(15)
il aurait rempli dans les 11 autres vides octets.http://dev.mysql.com/doc/refman/5.0/en/char.html
( Mon octet de calcul a été probablement puisque qu'il est toujours -1/+1 ou quelque chose comme ça ).
Si vous le réglez à
varchar(100)
et votre ligne de données est de 50 caractères, puis elle n'utilisera que la moitié de cela, il n' pas agir commechar
qui remplit les octets restants.Le max pour
varchar
est de 255. Si vous stockez de grandes quantités de données, essayez quelque chose commeTEXT
au lieu deVARCHAR
ensuite.Varchar est de 65 535 max. Char est de 255 max. aussi je ne peux pas utiliser du Texte.
Je ne sais pas pourquoi c'est si complexe. Il suffit de mettre un varchar pour un montant que vous pensez ne pas dépasser.
OriginalL'auteur meder omuraliev
De la MySQL 5.0 Manuel:
Je n'utilise que des VARCHAR quand je suis certains que les données de la colonne doit contenir ne pourra jamais dépasser une certaine longueur, et même alors, je suis prudent. Si je suis stocker une chaîne de texte, j'ai tendance à utiliser l'un des types de TEXTE.
Découvrez la MySQL Besoins De Stockage pour plus d'informations sur la façon dont les octets sont utilisés.
OriginalL'auteur mlambie
Extra Small locales de note. Le nombre d'octets utilisés dépendra du schéma de codage utilisé. 1 octet par caractère dans l'encodage latin1, mais jusqu'à 3 en UTF8. Voir le lien dans la mlambie la réponse pour plus de détails.
OriginalL'auteur martin clayton
Si vous regardez ici, il devrait tout vous dire sur varchar vous voulez savoir:
http://dev.mysql.com/doc/refman/5.0/en/char.html
Fondamentalement, selon la durée que vous avez choisi, il va utiliser 1 ou deux octets pour le suivi de la longueur de la chaîne actuelle dans cette colonne, donc il va stocker le nombre d'octets pour les données que vous mettez, plus un ou deux octets.
Donc, si vous mettez dans "abc", puis il sera de 4 ou 5 octets utilisés pour cette colonne de la ligne.
Si vous avez utilisé
char(15)
alors même " abc " peut prendre jusqu'à 15 octets, car l'information est le droit rembourré pour utiliser la totalité de 15 octets.Non, le droit de rembourrage est pour char, pas de type varchar.
OriginalL'auteur James Black