Avant la version 5.0.3 de MySQL, il était capable de stocker 255 caractères, mais à partir de la version 5.0.3, il peut stocker 65 535 caractères.
La documentation officielle de MySQL indique :
La longueur maximale effective de VARCHAR dans MySQL 5.0.3 et versions ultérieures dépend de la taille maximale des lignes (65 535 octets, partagée par toutes les colonnes) et du jeu de caractères utilisé. Par exemple, les caractères utf8 peuvent nécessiter jusqu'à trois octets par caractère, donc une colonne VARCHAR utilisant le jeu de caractères utf8 peut être déclarée comme comportant un maximum de 21 844 caractères.
N'oubliez pas que la taille maximale des lignes est de 65 535 octets. Cela signifie qu'en incluant toutes les colonnes, la taille totale ne doit pas dépasser 65 535 octets.
Voyons ce qui se passe si cette limite est violée :
Il s'agit d'un tableau avec deux colonnes, "un" est un varchar de longueur 32 765 et "deux" est un varchar de longueur 32 766.
Longueur = 32765 + 2 + 32766 + 2 = 65535.
CREATE TABLE IF NOT EXISTS `mytable` ( `one` varchar(32765) NOT NULL, `two` varchar(32766) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Augmentons maintenant la longueur de la colonne -
CREATE TABLE IF NOT EXISTS `mytable` ( `one` varchar(32767) NOT NULL, `two` varchar(32770) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Ce qui précède donne l'erreur suivante -
#1118 - 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
Ce qui précède se montre -
The maximum row size is 65,535 bytes. If it exceeds, an error will be visible.
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!