Mysql 为什么表字符集设置为utf8mb4,排序规则设置为utf8mb4\U unicode\U 520\U ci

Mysql 为什么表字符集设置为utf8mb4,排序规则设置为utf8mb4\U unicode\U 520\U ci,mysql,wordpress,phpmyadmin,character-encoding,collation,Mysql,Wordpress,Phpmyadmin,Character Encoding,Collation,我最近注意到,每当我启动一个新的WordPress项目时,我的表的排序规则都会自动从utf8\u unicode\u ci(我在从phpMyAdmin创建一个新数据库时选择它)更改为utf8mb4\u unicode\u 520\u ci 另外,我注意到在phpMyAdmin的“常规设置”下,服务器连接排序规则默认为utf8mb4\u unicode\u 520\u ci 我在Ubuntu 17.04上运行MySQL服务器5.7.17和phpMyAdmin 4.6.6 我的问题如下: 为什么会这

我最近注意到,每当我启动一个新的WordPress项目时,我的表的排序规则都会自动从
utf8\u unicode\u ci
(我在从phpMyAdmin创建一个新数据库时选择它)更改为
utf8mb4\u unicode\u 520\u ci

另外,我注意到在phpMyAdmin的“常规设置”下,服务器连接排序规则默认为
utf8mb4\u unicode\u 520\u ci

我在Ubuntu 17.04上运行MySQL服务器5.7.17和phpMyAdmin 4.6.6

我的问题如下:

  • 为什么会这样
  • 如果可能,我如何防止这种情况?由于
    utf8mb4
    的原因,我在将WP站点迁移到不支持它的旧MySQL服务器时遇到了问题
  • 这是第二点。明智的在
    utf8
    上使用字符集
    utf8mb4
    ,在
    utf8mb4\u unicode\u 520\u ci
    上使用排序规则有什么好处吗

  • 过去,只有
    utf8
    ;将来,
    utf8mb4
    将是默认字符集。现在,默认字符集是
    utf8mb4

    在过去,
    \u general\u ci
    是默认的排序规则;然后是
    \u unicode\u ci
    (unicode 4.0)更好,然后是
    \u unicode\u 520\u ci
    (unicode 5.20)。在未来(MySQL 8.0),默认值将是
    \u 0900\u ci\u ai
    (Unicode 9.0)

    与此同时,道路上布满了MySQL过去的错误造成的坑洼。WP的设计师们在一个没有注意到凹坑的大水箱里驾驶

    MySQL 5.6是一个巨大的漏洞,它吞噬了许多WP用户,因为在过长的
    VARCHAR(255)
    上,索引和WP索引都有767个限制,并且可能使用
    utf8mb4
    。你已经过了5.7.17了。(您未来向8.0的迁移将不会那么坎坷。)

    也就是说,在5.7.7+上新创建的数据库/表/列不应该遇到767问题,但是从旧版本(5.5.3+)迁移的东西可能会有问题,特别是当某些东西导致您更改为utf8mb4时

    怎么办?我可能会用尽空间来解释所有的选项。因此,请提供数据的历史记录、升级路径(如果有)、当前设置、表的
    行_格式
    、列的
    字符集
    排序规则
    的输出显示“char%”等变量

    你应该在哪里?对于5.7.7+,
    utf8mb4
    utf8mb4\u unicode\u 520\u ci
    ,只要可行。该字符集提供表情符号和所有中文(utf8不提供)。这种排序是最好的,尽管您可能很难注意到它的重要性


    注意:排序规则名称的第一部分是它使用的唯一字符集。这是
    utf8\u unicode\u ci
    不适用于
    utf8mb4

    回答得好,谢谢你。我唯一的问题是迁移到较旧的MySQL服务器时。因此,为了便于将来参考,如果可能的话,最好尝试升级MySQL服务器,而不是将字符集和排序规则转换回Unicode 4.0。再次感谢。@谢谢你动摇了我的自尊。是的,向前走,而不是向后走。@RickJames下一个主要的排序规则版本支持什么时候发布(例如
    0900\u ci\u ai
    ),我们在哪里可以跟踪它的发展?在谷歌上引用它不会产生任何结果。快速浏览一下,似乎可以发现基于拉丁语的520和900的排序是相同的。我不知道西里尔语。(扭动我的手臂,我将编写一个程序来进行分析。)MySQL 8.0.11从2018-04-19开始是GA。