为什么 table CHARSET 设置为 utf8mb4 而 COLLATION 设置为 utf8mb4_unicode_520_ci
Why is table CHARSET set to utf8mb4 and COLLATION to utf8mb4_unicode_520_ci
我最近注意到,每当我开始一个新的 WordPress 项目时,我的表的排序规则会自动从 utf8_unicode_ci
更改(当我从 phpMyAdmin 创建一个新的数据库时 select)至 utf8mb4_unicode_520_ci
.
此外,我注意到在 phpMyAdmin 的“常规设置”下,服务器连接排序规则默认为 utf8mb4_unicode_520_ci
。
我 运行 MySQL 服务器 5.7.17 和 phpMyAdmin 4.6.6 Ubuntu 17.04.
我的问题如下:
- 为什么会这样?
- 如果可能,我该如何防止这种情况发生?由于
utf8mb4
我在将 WP 站点迁移到不支持它的旧 MySQL 服务器时遇到了问题。
- 第 2 点是否可取?在
utf8
上使用字符集 utf8mb4
,在 utf8_unicode_ci
上使用排序规则 utf8mb4_unicode_520_ci
有什么好处吗?
以前只有utf8
; 以后utf8mb4为默认字符集。现在utf8mb4
为默认字符集。
过去,_general_ci
是默认排序规则;然后 _unicode_ci
(Unicode 4.0) 更好,然后是 _unicode_520_ci
(Unicode 5.20)。以后(MySQL8.0),默认为_0900_ci_ai
(Unicode 9.0)。
与此同时,路上满是 MySQL 过去的错误造成的坑洼。而 WP 设计师们开着一辆大坦克,根本没有注意到坑洼。
MySQL 5.6 是一个大坑,吞噬了许多 WP 用户,因为索引的 767 限制以及 WP 索引过长 VARCHAR(255)
和使用 [= 的可能性11=]。拥有 5.7.17,您已经过关了。 (您未来迁移到 8.0 的过程不会那么坎坷。)
也就是说,在 5.7.7+ 上新创建的 databases/tables/columns 应该不会遇到 767 问题,但是从旧版本 (5.5.3+) 迁移的东西可能会有问题,特别是如果某些东西导致你改变到 utf8mb4.
怎么办?我可能会 运行 从 space 中拼出所有选项。因此,请提供数据的历史记录、升级路径(如果有)、当前设置、表的 ROW_FORMAT
、列的 CHARACTER SET
和 COLLATION
、[ 的输出=21=]
你应该在哪里?对于 5.7.7+,utf8mb4
和 utf8mb4_unicode_520_ci
在可行的情况下。该字符集为您提供表情符号和所有中文(utf8 没有)。该排序规则是可用的最佳排序规则,尽管您可能很难注意到它重要的地方。
注意:排序规则名称的第一部分是它使用的唯一字符集。也就是说 utf8_unicode_ci
不适用于 utf8mb4
。
我最近注意到,每当我开始一个新的 WordPress 项目时,我的表的排序规则会自动从 utf8_unicode_ci
更改(当我从 phpMyAdmin 创建一个新的数据库时 select)至 utf8mb4_unicode_520_ci
.
此外,我注意到在 phpMyAdmin 的“常规设置”下,服务器连接排序规则默认为 utf8mb4_unicode_520_ci
。
我 运行 MySQL 服务器 5.7.17 和 phpMyAdmin 4.6.6 Ubuntu 17.04.
我的问题如下:
- 为什么会这样?
- 如果可能,我该如何防止这种情况发生?由于
utf8mb4
我在将 WP 站点迁移到不支持它的旧 MySQL 服务器时遇到了问题。 - 第 2 点是否可取?在
utf8
上使用字符集utf8mb4
,在utf8_unicode_ci
上使用排序规则utf8mb4_unicode_520_ci
有什么好处吗?
以前只有utf8
; 以后utf8mb4为默认字符集。现在utf8mb4
为默认字符集。
过去,_general_ci
是默认排序规则;然后 _unicode_ci
(Unicode 4.0) 更好,然后是 _unicode_520_ci
(Unicode 5.20)。以后(MySQL8.0),默认为_0900_ci_ai
(Unicode 9.0)。
与此同时,路上满是 MySQL 过去的错误造成的坑洼。而 WP 设计师们开着一辆大坦克,根本没有注意到坑洼。
MySQL 5.6 是一个大坑,吞噬了许多 WP 用户,因为索引的 767 限制以及 WP 索引过长 VARCHAR(255)
和使用 [= 的可能性11=]。拥有 5.7.17,您已经过关了。 (您未来迁移到 8.0 的过程不会那么坎坷。)
也就是说,在 5.7.7+ 上新创建的 databases/tables/columns 应该不会遇到 767 问题,但是从旧版本 (5.5.3+) 迁移的东西可能会有问题,特别是如果某些东西导致你改变到 utf8mb4.
怎么办?我可能会 运行 从 space 中拼出所有选项。因此,请提供数据的历史记录、升级路径(如果有)、当前设置、表的 ROW_FORMAT
、列的 CHARACTER SET
和 COLLATION
、[ 的输出=21=]
你应该在哪里?对于 5.7.7+,utf8mb4
和 utf8mb4_unicode_520_ci
在可行的情况下。该字符集为您提供表情符号和所有中文(utf8 没有)。该排序规则是可用的最佳排序规则,尽管您可能很难注意到它重要的地方。
注意:排序规则名称的第一部分是它使用的唯一字符集。也就是说 utf8_unicode_ci
不适用于 utf8mb4
。