Kiedyś pytałem tutaj na forum dlaczego tak się dzieje, ale niestety nikt nie był wstanie udzielić odpowiedzi.
Z tego co pamiętam taka sytuacja ma miejsce gdy np. w zapytaniu tworzacym tabele masz w jednej tabeli zdefiniony zarowno typ char oraz varchar. Jezeli masz w jednej tabeli tylko char to wowczas nie zmienia typu.
Przed chwila jednak sprawdzilem na wersji 5.0.xx i takiej definicji:
mysql> CREATE TABLE test33 (id int UNSIGNED NOT NULL PRIMARY KEY, nazwa char(36), nazwa2 varchar(123
));
Query OK, 0 rows affected (0.11 sec)
mysql nie zmienil i po wczytaniu parametrow tabeli wyszlo:
mysql> DESC test33;
+--------+------------------+------+-----+---------+-------+
| FIELD | Type | NULL | KEY | DEFAULT | Extra |
+--------+------------------+------+-----+---------+-------+
| id | int(10) UNSIGNED | NO | PRI | NULL | |
| nazwa | char(36) | YES | | NULL | |
| nazwa2 | varchar(123) | YES | | NULL | |
+--------+------------------+------+-----+---------+-------+
3 rows IN SET (0.01 sec)
Na pewno w poprzednich wersjach (ale ktorych nie jestem dokladnie powiedziec) wlasnie mysql w opisany wyzej sposob zmienial typ. Czemu? Niestety nie wiem. Być może to kwestia jakiegos konfigu. Nie wiem.