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

Can I safely use a utf8 connection with utf8mb4 columns?

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

我想保持 utf8 连接,直到迁移所有表。

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

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

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

如果您尝试插入句子 MySQL 如何执行转换的一些示例:
« 这个表情符号是一只猫 »

1 - 在 table utf8 中使用 utf8 连接:MySQL 从字符 4 字节截断字符串:
« 这个表情符号 »

2 - 在 utf8mb4 table 中使用 utf8 连接:MySQL 将 4 字节字符替换为“????”
« 这个表情符号????是一只猫»

3 - 在 utf8 table 中使用 utf8mb4 连接:MySQL 将 4 字节字符替换为“?”
« 这个表情符号?一只猫 »