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