只要我的数据库中的所有表都没有迁移到utf8mb4,是否存在继续使用utf8连接的风险?
我想保留utf8连接,直到所有表都被迁移。
基本问题是:在非常大的表(数百GB)上进行更改需要多长时间?
答案 0 :(得分:5)
如果您尝试插入句子,MySQL如何执行转换的一些示例:
«这个表情符号是一只猫»
1 - 在表utf8中使用utf8连接:MySQL从字符4字节中截断字符串:
«这个表情符号»
2 - 在utf8mb4表中使用utf8连接:MySQL用“????”替换4字节字符
«这个表情符号????是一只猫»
3 - 在utf8表中使用utf8mb4连接:MySQL用“?”替换4字节字符
«这个表情符号?一只猫»
答案 1 :(得分:0)
只要所有数据都在3字节的utf8子集中,utf8和utf8mb4就是相同的。
连接参数(包括SET NAMES
)指定客户端中的编码。列/表定义说明列中处理的编码。 MySQL将在您INSERT
或SELECT
之间进行转换。同样,只要所有数据都是utf8子集,就可以进行转换(实际上是无操作)。