排序规则将 utf8mb4_unicode_ci 更改为 utf8mb4_general_ci
Posted
技术标签:
【中文标题】排序规则将 utf8mb4_unicode_ci 更改为 utf8mb4_general_ci【英文标题】:Collation change utf8mb4_unicode_ci to utf8mb4_general_ci 【发布时间】:2020-11-20 21:19:54 【问题描述】:对于我的数据库,我使用 utf8mb4_unicode_ci
和 utf8mb4
作为默认字符集。这是一个错误,使用我创建的数据库的人抱怨排序规则。我需要将其转换为utf8mb4_general_ci
。我是否能够只使用更改语句更改数据库,例如:
ALTER DATABASE `#database` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
或者,即使两个排序规则之间的字符集相同,我是否需要更改每个单独的表并处理列?我似乎无法找到明确的答案......我正在使用 mysql 5.7.2x 。
【问题讨论】:
【参考方案1】:utf8mb4_unicode_520_ci
比你提到的任何一个排序规则都要好。
他们为什么抱怨?也许JOINs
没有使用索引。我会和他们争论应该改变旧表。
ALTER DATABASE
只为将来的表设置默认值。它不会做你需要的。
每个表都需要ALTER TABLE ... CONVERT TO ...
。有关类似的ALTER
,请参阅http://mysql.rjweb.org/doc.php/limits#767_limit_in_innodb_indexes。它提供了一种自动生成所有ALTERs
的方法。
【讨论】:
如果没有人连接到数据库,这看起来安全吗? -SET FOREIGN_KEY_CHECKS = 0
,ALTER TABLE #table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
, SET FOREIGN_KEY_CHECKS = 1
用于 DB 中每个 BASE TABLES
的表?以上是关于排序规则将 utf8mb4_unicode_ci 更改为 utf8mb4_general_ci的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 数据库 - 将字符集和排序规则转换为 utf8mb4 和 utf8mb4_unicode_ci?
utf8mb4_unicode_ci 在 PhpMyAdmin 中选择,但 WordPress 表使用 utf8mb4_unicode_520_ci 排序规则
操作“=”的排序规则(utf8mb4_unicode_ci,EXPLICIT)和(utf8_general_ci,COERCIBLE)的非法混合