En fait, le type de données VARCHAR stocke les données de caractères de longueur variable en caractères à un ou plusieurs octets. La syntaxe de ce type de données est VARCHAR(n), où n est le nombre maximum de caractères qui doivent être spécifiés lors de la création de la table. Avant MySQL 5.03, la valeur de n pouvait être comprise entre 0 et 255, mais dans MySQL 5.03 et versions ultérieures, la valeur pouvait être comprise entre 0 et 65 535.
Le nombre maximum de caractères stockés dans un VARCHAR dépend de la taille maximale de la ligne et du jeu de caractères utilisé. Si nous utilisons le jeu de caractères ASCII, il peut stocker 65 535 caractères car ASCII utilise 1 octet par caractère. D'un autre côté, si nous utilisons le jeu de caractères utf8, la limite de caractères sera de 21 844 car utf8 utilisera 3 octets par caractère. La limite maximale de taille de ligne est de 65 535 octets, ce qui signifie qu’en incluant toutes les colonnes, la taille de ligne ne doit pas dépasser 65 535 octets.
mysql> Create Table var_test(FName Varchar(32765) NOT NULL, LName Varchar(32766) NOT NULL); Query OK, 0 rows affected (0.25 sec)
La requête ci-dessus crée une table avec deux colonnes : FName Varchar(32765) et LName Varchar(32766). La longueur totale est donc de 32 765+2+32 766+2=65 535 (en utilisant 2 octets par colonne pour stocker la longueur).
mysql> Create Table var_test1(FName varchar(32766) NOT NULL, LName Varchar(32766) NOT NULL); ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
Maintenant, MySQL renverra une erreur lorsque la longueur est augmentée de 1 octet, comme indiqué dans la requête ci-dessus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!