其实我理解提问者的疑问在于,明明最长四位的UTF-8是之前最长三位的UTF-8的超集,也就是可以完全向下兼容,为什么不能就地升级呢?
这里面有个问题就是,即便是原有功能的扩展,有时候也可能是一种破坏性更新。
尽管并不知道这是不是MySQL选择这个的原因。但是utf8和utf8mb4的行为就是会不一样的。譬如说原有的utb8对于不支持的字符存储报错,那么你就地升级到utf8mb4他就不会报错了,这也是行为的变化,万一有些SB就是依赖这个报错呢?这也是Windows必须保留各种系统组件的历史版本的原因之一……