我可以安全地使用与utf8mb4列的utf8连接吗?

时间:2017-01-03 09:57:59

标签: mysql utf-8 utf8mb4

只要我的数据库中的所有表都没有迁移到utf8mb4,是否存在继续使用utf8连接的风险?

我想保留utf8连接,直到所有表都被迁移。

基本问题是:在非常大的表(数百GB)上进行更改需要多长时间?

2 个答案:

答案 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将在您INSERTSELECT之间进行转换。同样,只要所有数据都是utf8子集,就可以进行转换(实际上是无操作)。