通过以上更改,我们可以将表情符号保存在我们的列中。
问题:1)我是否需要删除现有索引(varchar列)并像以前一样使用utf8重新创建索引,每个字符占用3个字节,现在使用utf8mb4编码将占用4个字节?
CHARACTER SET
和COLLATION
。如果更改其中任何一个,则必须重建索引。 “指针”(在此上下文中)是PRIMARY KEY
的副本。您应该做以下一项或多项
ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4 COLLATE ...,;
转换表中的所有文本列。或者,如果您需要保留其当前的字符集/排序规则,则更改每列:
ALTER TABLE tbl MODIFY col_name ... CHARACTER SET utf8mb4 COLLATE ...;
其中第一个“ ...”是列定义的其余部分(VARCHAR,NOT NULL,无论如何)。任何涉及要更改的列的索引都将重建。特别是,请注意,
VARCHAR
PRIMARY KEY
在每个二级索引中均有效。排序规则
utf8mb4_unicode_ci
很旧;您可能更喜欢utf8mb4_unicode_520_ci
,尤其是因为它将表情符号视为与众不同而不是集中在一起(IIRC)。utf8是utf8mb4的子集的事实并不重要; MySQL将其视为更改,因此无法采取任何捷径。