Originariamente inviato da meganoide
il campo 'livello' lo voglio portare da CHAR(2) a VARCHAR(2):

ALTER TABLE `utenti` CHANGE `livello` `livello` VARCHAR( 2 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL

la eseguo e da phpmyadmin il campo resta sempre CHAR(2)... e dice anche che "La query è stata eseguita con successo"

dov'è l'errore?
nessun errore. se il campo e' minore di tre verra' sempre impostato come CHAR. Non mi ricordo ora se tre e' compreso o meno. Il perche' e' intuitivo. Siccome VARCHAR usa un byte per definire la lunghezza tanto vale che sia un CHAR che e' un campo di lunghezza fissa.

Occhio al contrario... per lunghezze superiori >3 (con la riserva sul 3 che non ricordo) se utilizzi un campo VARCHAR tutti i campi CHAR di lunghezza superiore a 3 verranno trasformati in VARCHAR. In pratica mysql puo' gestire solo un tipo di campo tra CHAR e VARCHAR con sempre il limite minimo di > 3. Al di sotto del quale e' sempre CHAR.