数据库从 latin1 转换为 utf8mb4,索引呢?

Database conversion from latin1 to utf8mb4, what about indexes?

我注意到我的 MODX 数据库在数据库及其 table 中仍然使用 latin1 字符集。我想将它们转换为 utf8mb4 并相应地更新排序规则。

不太确定我应该怎么做。这是正确的吗?

索引是自动更新的吗?还有什么我应该注意的吗?

一个额外的问题:最 suitable latest utf8_unicode 排序规则是什么?西方语言应该可以。

更改 table 或架构的默认字符集不会更改列本身中的数据,它只会更改默认值以在您下次添加 table 或添加时应用table.

的一列

要转换当前数据,一次更改一个 table:

ALTER TABLE <name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

排序规则 utf8mb4_0900_ai_ci 比早期的排序规则更快(至少根据 documentation),而且它是最新和最准确的。此排序规则需要 MySQL 8.0.

MySQL 5.7 中的最新排序规则是 utf8_unicode_520_ci。

像这样的 table 转换会重建索引,因此您无需执行任何其他操作。