web-dev-qa-db-fra.com

Un VARCHAR (20000) est-il valide dans MySQL?

J'ai besoin de clarifier la longueur maximale d'un champ varchar dans MySQL.

J'ai toujours pensé que la longueur maximale était de 255 (255 quoi? Des personnages que j'ai supposés, mais cela pourrait être une source de confusion). En jetant un œil aux tables d'une base de données mise en place par une entreprise externe avec laquelle nous travaillons, je vois une configuration de champ comme varchar (20000), contenant des morceaux de xml de plus de 255 caractères. Pourquoi ça marche? 20000 est-il une valeur valide?

Un peu de recherche sur Google a révélé que dans mysql, varchar a une limite de 65 535 octets, et je vois varchar (65535) en cours d'utilisation , alors comment la limite de 255 est-elle liée à cela?

60
Zoe

Notez les versions de MySQL.

http://dev.mysql.com/doc/refman/5.0/en/char.html

Les valeurs des colonnes VARCHAR sont des chaînes de longueur variable. La longueur peut être spécifiée sous la forme d'une valeur de 0 à 255 avant MySQL 5.0.3 et de 0 à 65 535 dans les versions 5.0.3 et ultérieures. La longueur maximale effective d'un VARCHAR dans MySQL 5.0.3 et versions ultérieures est soumise à la taille de ligne maximale (65 535 octets, qui est partagée entre toutes les colonnes) et au jeu de caractères utilisé.

Quelle version de MySQL ai-je?

Exécutez la requête suivante ...

select version() as myVersion
72
Sampson

Il est valide depuis la version 5.0.3, quand ils ont changé la longueur maximale de 255 en 65535.

CHAR a toujours été de 255 max.

http://dev.mysql.com/doc/refman/5.0/en/char.html

12

Si vous attendez des entrées trop importantes, il est préférable d'utiliser plutôt TEXT, MEDIUMTEXT ou LONGTEXT.

8
Havenard

Bien que l'index ne puisse pas être construit sur varchar (2000)

3
shantanuo

Cette question a déjà une réponse à Quelle est la taille maximale de MySQL VARCHAR?

Gardez à l'esprit que MySQL a une limite de taille de ligne maximale

La représentation interne d'une table MySQL a une limite de taille de ligne maximale de 65 535 octets, sans compter les types BLOB et TEXT. Les colonnes BLOB et TEXT ne contribuent que de 9 à 12 octets à la limite de taille de ligne car leur contenu est stocké séparément du reste de la ligne. En savoir plus sur Limites du nombre de colonnes du tableau et de la taille des lignes.

La taille maximale qu'une seule colonne peut occuper est différente avant et après MySQL 5.0.3

Les valeurs des colonnes VARCHAR sont des chaînes de longueur variable. La longueur peut être spécifiée comme une valeur de 0 à 255 avant MySQL 5.0.3 et de 0 à 65 535 dans 5.0.3 et versions ultérieures. La longueur maximale effective d'un VARCHAR dans MySQL 5.0.3 et versions ultérieures est soumise à la taille de ligne maximale (65 535 octets, qui est partagée entre toutes les colonnes) et au jeu de caractères utilisé.

Cependant, notez que la limite est inférieure si vous utilisez un jeu de caractères multi-octets comme utf8 ou utf8mb4.

Utilisez les types TEXT afin de dépasser la limite de taille de ligne.

Les quatre types de TEXTE sont TINYTEXT, TEXT, MEDIUMTEXT et LONGTEXT. Ceux-ci correspondent aux quatre types de BLOB et ont les mêmes longueurs maximales et exigences de stockage.

2
rajukoyilandy

Le manuel MySQL indique

Les valeurs des colonnes VARCHAR sont des chaînes de longueur variable. La longueur peut être spécifiée sous la forme d'une valeur de 0 à 255 avant MySQL 5.0.3 et de 0 à 65 535 dans les versions 5.0.3 et ultérieures.

Cela dépend donc de la version que vous utilisez.

1
pavium