2017-01-03 77 views
0

只要我数据库中的所有表都没有迁移到utf8mb4,是否有继续使用utf8连接的风险?我可以安全地使用utf8mb4列的utf8连接吗?

我认为保持utf8连接,直到所有的表被迁移。

潜在的问题是:需要多长时间才能对非常大的表格(数百GB)进行更改?

回答

0

只要所有的数据都在3字节的utf8子集中,utf8和utf8mb4是相同的。

连接参数(包括SET NAMES)指定客户端中的编码。列/表定义说明在列中处理的编码。 MySQL将在INSERTSELECT之间进行转换。同样,只要所有数据都是utf8子集,转换就有可能(实际上是无操作)。

2

MySQL的表现如何,如果你试图插入句子转换的一些例子:
«这表情图案是一只猫»

1 - 与表的UTF8 UTF8连接:MySQL的截断从字符字符串4个字节:
«该表情符号»

2 - 与一个utf8mb4表UTF8连接:MySQL的替换 “????”
«这表情符号的4个字节的字符????是一个猫»

3 - 在utf8表中使用utf8mb4连接:MySQL用“?”替换4字节字符
«This emoji?一个猫»

+0

当需要utf8mb4会发生什么情况的好例子,但连接和列之间不匹配。 –

相关问题