J'ai créé une table et mis accidentellement varchar
length sous la forme 300
au lieu de 65353
. Comment puis-je résoudre ce problème?
Un exemple serait apprécié.
Avez-vous essayé cela?
ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353);
Ceci changera le type de nom_colonne en VARCHAR(65353)
ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536);
Vous devez répertorier le nom de la colonne à deux reprises, même si vous ne modifiez pas son nom.
Notez qu'après cette modification, le type de données de la colonne sera MEDIUMTEXT
.
Miky D est correct, la commande MODIFY
peut le faire de manière plus concise.
Concernant la chose MEDIUMTEXT
: une ligne MySQL ne peut contenir que 65 535 octets (sans compter les colonnes BLOB/TEXT). Si vous essayez de modifier une colonne pour qu'elle soit trop grande et que la taille totale de la ligne soit égale ou supérieure à 65 536, vous risquez d'obtenir une erreur. Si vous essayez de déclarer une colonne de VARCHAR(65536)
, elle est trop grande, même si c'est la seule colonne de cette table. MySQL la convertit automatiquement en un type de données MEDIUMTEXT
.
mysql> create table foo (str varchar(300));
mysql> alter table foo modify str varchar(65536);
mysql> show create table foo;
CREATE TABLE `foo` (
`str` mediumtext
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
J'ai mal interprété votre question initiale, vous voulez VARCHAR(65353)
, ce que MySQL peut faire, tant que la taille de la colonne additionnée aux autres colonnes du tableau ne dépasse pas 65535.
mysql> create table foo (str1 varchar(300), str2 varchar(300));
mysql> alter table foo modify str2 varchar(65353);
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