phpmyadmin 为什么将表CHARSET设置为utf8mb4而将COLLATION设置为utf8mb4_unicode_520_ci

r1zk6ea1  于 2022-11-09  发布在  PHP
关注(0)|答案(1)|浏览(199)

我最近注意到,每当我开始一个新的WordPress项目时,我的表的排序会自动从utf8_unicode_ci(当我从phpMyAdmin创建一个新的DB时选择)更改为utf8mb4_unicode_520_ci
另外,我注意到在phpMyAdmin的“General Settings”下,服务器连接排序规则默认为utf8mb4_unicode_520_ci
我在Ubuntu 17.04上运行MySQL服务器5.7.17和phpMyAdmin 4.6.6。
我的问题如下:
1.为什么会发生这种情况?
1.如果可能的话,我该如何防止这种情况?由于utf8mb4,我在将WP站点迁移到不支持它的旧MySQL服务器时遇到了问题。
1.第2点是否可取?使用字符集utf8mb4而不是utf8,使用排序规则utf8mb4_unicode_520_ci而不是utf8_unicode_ci有什么好处吗?

rjjhvcjd

rjjhvcjd1#

在过去,只有utf8(又名utf8mb3);在未来,utf8 mb 4将是默认字符集。现在utf8mb4是默认字符集。
过去,_general_ci是默认排序规则;然后是_unicode_520_ci(Unicode 5.20)。在未来(MySQL 8.0)中,默认值将是_0900_ci_ai(Unicode 9.0)。
与此同时,道路上到处都是由MySQL过去的错误所造成的坑洞。而WP的设计者们开着一辆大坦克,却没有注意到这些坑洞。
MySQL 5.6是一个巨大的坑洞,吞噬了许多WP用户,因为在过长的VARCHAR(255)上有767个索引和WP索引的限制,并且可能使用utf8mb4。您已经拥有了5.7.17。(您将来迁移到8.0时将不会那么颠簸。)
也就是说,在5.7.7+上新创建的数据库/表/列应该不会遇到767问题,但从旧版本(5.5.3+)迁移的内容可能会有问题,特别是当某些内容导致您更改为utf8 mb 4时。
怎么办?我可能会用尽空间试图拼出所有的选项。因此,提供数据的历史记录,升级路径(如果有的话),当前设置,表的ROW_FORMAT,列的CHARACTER SETCOLLATIONSHOW VARIABLES LIKE 'char%';的输出
你应该在哪里?对于5.7.7+,utf8mb4utf8mb4_unicode_520_ci,只要可行。这个字符集给你Emoji和所有的中文(utf8没有)。这个排序是最好的,虽然你可能很难注意到它的重要性。
注意:排序规则名称的第一部分是它唯一可以使用的字符集。也就是说,utf8_unicode_ci不能与utf8mb4一起使用。
对于MySQL 8.0,有一个比标题中提到的更好的排序规则。一般来说,只需为所选的字符集使用默认排序规则(除非您有一些语言特定的兼容性问题)。

相关问题