将 cms_content 表或仅 content 字段从 utf8mb3(即 MySQL 中的 utf8)修改为 utf8mb4,有以下几种方式。推荐优先使用 整表转换,以保持一致性并避免潜在问题。
ALTER TABLE cms_content CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
说明:
CONVERT TO CHARACTER SET会同时修改表的默认字符集和所有字符类型列(包括content)。
utf8mb4_unicode_ci是通用排序规则;如需区分大小写或用其他语言规则,可换成utf8mb4_general_ci、utf8mb4_0900_ai_ci(MySQL 8.0+)等。此操作会重建表,对大表可能耗时较长,建议在低峰期执行。
如果你确定只需要改 content 字段,且希望保留表及其他字段的原始字符集:
ALTER TABLE cms_content MODIFY COLUMN content LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;
注意:
必须显式指定
NOT NULL,因为原定义中有该约束,否则可能被改为允许 NULL。仅改单字段可能导致混合字符集,增加连接/索引复杂度,一般不推荐。
最新评论: