/ / comment modifier un varchar indexé (100) en texte sans supprimer l'index? - mysql, sql

comment modifier un varchar indexé (100) en texte sans supprimer l'index? - mysql, sql

Est-il possible de modifier la colonne? prénom à texte type de données sans supprimer l'index sur la colonne. ou tout variable mysql spécifier longueur de clé par défaut lorsqu'il existe une colonne de texte pour l'indexation lors de la modification du type de données de la colonne.

mysql> show create table emp1;
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                        |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| emp1  | CREATE TABLE `emp1` (
`name` varchar(100) DEFAULT NULL,
`id` varchar(10) DEFAULT NULL,
`date` date DEFAULT NULL,
KEY `index1` (`name`),
KEY `index2` (`id`,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
mysql>
mysql>
mysql>
mysql>
mysql> alter table emp1 modify column name text;
ERROR 1170 (42000): BLOB/TEXT column "name" used in key specification without a key length

Réponses:

1 pour la réponse № 1

Vous pouvez "avoir un index sur un TEXT champ sans mettre une longueur de clé sur l'index. Vos index actuels n'ont pas de longueur de clé, vous pouvez donc les convertir en TEXT jusqu'à ce que vous déposez ces index.

Mais vous pouvez créer des index redondants pour ne jamais avoir un moment sans index.

mysql> alter table emp1 add key index1_new (name(80));
mysql> alter table emp1 drop key index1;

mysql> alter table emp1 add key index2_new (id,name(80));
mysql> alter table emp1 drop key index2;

mysql> alter table emp1 modify column name text;

Vous pourrez peut-être combiner ces étapes en moins d’étapes.