排序规则更改 utf8mb4_unicode_ci 为 utf8mb4_general_ci
Collation change utf8mb4_unicode_ci to utf8mb4_general_ci
对于我的数据库,我使用 utf8mb4_unicode_ci
和 utf8mb4
字符集作为默认值。这是一个错误,使用我创建的数据库的人都在抱怨排序规则。我需要将其转换为 utf8mb4_general_ci
。我是否可以使用 alter 语句更改数据库,例如:
ALTER DATABASE `#{database}` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
或者,即使两个排序规则之间的字符集相同,我是否需要更改每个单独的 table 并处理列?我似乎无法找到明确的答案......我正在使用 MySQL 5.7.2x .
utf8mb4_unicode_520_ci
比您提到的任何一个归类都好。
他们为什么抱怨?也许 JOINs
未能使用索引。我会和他们争论旧的 table 应该改变。
ALTER DATABASE
仅为未来 table 设置默认值。它不会做你需要的。
每个 table 都需要 ALTER TABLE ... CONVERT TO ...
。有关类似的 ALTER
,请参阅 http://mysql.rjweb.org/doc.php/limits#767_limit_in_innodb_indexes。它提供了一种自动生成所有 ALTERs
.
的方法
对于我的数据库,我使用 utf8mb4_unicode_ci
和 utf8mb4
字符集作为默认值。这是一个错误,使用我创建的数据库的人都在抱怨排序规则。我需要将其转换为 utf8mb4_general_ci
。我是否可以使用 alter 语句更改数据库,例如:
ALTER DATABASE `#{database}` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
或者,即使两个排序规则之间的字符集相同,我是否需要更改每个单独的 table 并处理列?我似乎无法找到明确的答案......我正在使用 MySQL 5.7.2x .
utf8mb4_unicode_520_ci
比您提到的任何一个归类都好。
他们为什么抱怨?也许 JOINs
未能使用索引。我会和他们争论旧的 table 应该改变。
ALTER DATABASE
仅为未来 table 设置默认值。它不会做你需要的。
ALTER TABLE ... CONVERT TO ...
。有关类似的 ALTER
,请参阅 http://mysql.rjweb.org/doc.php/limits#767_limit_in_innodb_indexes。它提供了一种自动生成所有 ALTERs
.