数据库从 latin1 转换为 utf8mb4,索引呢?
Database conversion from latin1 to utf8mb4, what about indexes?
我注意到我的 MODX 数据库在数据库及其 table 中仍然使用 latin1 字符集。我想将它们转换为 utf8mb4 并相应地更新排序规则。
不太确定我应该怎么做。这是正确的吗?
- 我每个 table 都更改为使用 utf8mb4 和 utf8_unicode_ci?
- 我更新了数据库的默认字符集和排序规则。
索引是自动更新的吗?还有什么我应该注意的吗?
一个额外的问题:最 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 转换会重建索引,因此您无需执行任何其他操作。
我注意到我的 MODX 数据库在数据库及其 table 中仍然使用 latin1 字符集。我想将它们转换为 utf8mb4 并相应地更新排序规则。
不太确定我应该怎么做。这是正确的吗?
- 我每个 table 都更改为使用 utf8mb4 和 utf8_unicode_ci?
- 我更新了数据库的默认字符集和排序规则。
索引是自动更新的吗?还有什么我应该注意的吗?
一个额外的问题:最 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 转换会重建索引,因此您无需执行任何其他操作。