Normalement, la réponse de Eric devrait fonctionner:
ALTER TABLE tbl_name MODIFY columnA varchar(6) NULL DEFAULT NULL;
(Bien que la partie 'NULL NULL DEFAULT' est en option).
Mais comme vous, j'ai eu un cas qui vient de rentrer OK sans rien faire. Dans mon cas, il semble être dû au fait que ma clé faisait partie de la clé primaire. Donc, je devais faire ce qui suit:
ALTER TABLE tbl_name DROP PRIMARY KEY;
ALTER TABLE tbl_name MODIFY columnA varchar(6);
ALTER TABLE tbl_name ADD PRIMARY KEY (columnA);
avec cette dernière requête spécifiant quelle que soit votre clé primaire.
En outre, dans le cas où quelqu'un pense est trop bavard, la requête combinée suivante ne fonctionne pas, même si elle doit être identique:
ALTER TABLE tbl_name DROP PRIMARY KEY, MODIFY columnA varchar(6), ADD PRIMARY KEY (columnA);
Je suppose que mysql réécrit cette dernière requête dans un ordre différent si que la clé primaire existe toujours lorsque la modification est effectuée, d'où la nécessité de la décomposer en trois instructions.
FYI, c'est sur mysql 5.1.47 mais je n'ai pas encore trouvé de documentation indiquant pourquoi cela se produit donc je ne sais pas quelles versions sont affectées.
N'a pas fait la différence. – Will
@Will: Fonctionne pour moi sur 5.1.35 - quelle erreur obtenez-vous? –
Aucune erreur. Requête ok, 0 lignes affectées. 0 enregistrements, 0 doublons, 0 avertissements. – Will