those 'silent column specification changes' affect all table types. That
feature has caused lots of user questions over years. It is in the TODO to
remove that feature from MySQL, because it is not standards compliant. In
InnoDB, a reason to use a CHAR column in some cases is to reduce
fragmentation if there are lots of updates to that column. A CHAR column
takes a fixed space. Silent column specification changes in many cases
defeat this optimization which would otherwise be available to users.
Foreign keys, transactions, and row level locking for MySQL
InnoDB Hot Backup - a hot backup tool for InnoDB which also backs up MyISAM
Order MySQL technical support from https://order.mysql.com/
If any column in a table has a variable length, the entire row becomes
variable-length as a result. Therefore, if a table contains any
variable-length columns (VARCHAR, TEXT, or BLOB), all CHAR columns
longer than three characters are changed to VARCHAR columns. This
doesn't affect how you use the columns in any way; in MySQL, VARCHAR
is just a different way to store characters. MySQL performs this
conversion because it saves space and makes table operations faster.
See section 15 MySQL Storage Engines and Table Types.
Does this affect all table types? I'm curious if this is happening on
my InnoDB tables as well. No problems, just curiosity..