怎么选utf8mb4_general_ci、utf8mb4_unicode_ci、utf8mb4_bin
时间: 2023-10-26 08:08:48 浏览: 147
在选择 utf8mb4_general_ci、utf8mb4_unicode_ci、utf8mb4_bin 时,需要考虑到以下几个方面:
1.排序规则:utf8mb4_general_ci 和 utf8mb4_unicode_ci 都是根据 Unicode 字符集进行排序,但是 utf8mb4_general_ci 比 utf8mb4_unicode_ci 更快,但是 utf8mb4_unicode_ci 更准确。而 utf8mb4_bin 则是根据二进制值进行排序。
2.大小写敏感:utf8mb4_general_ci 和 utf8mb4_unicode_ci 都是不区分大小写的,而 utf8mb4_bin 则是区分大小写的。
3.适用场景:utf8mb4_general_ci 适用于一些不需要太高精度的场景,例如注册用户名和邮箱等。而 utf8mb4_unicode_ci 则适用于需要更高精度的场景,例如多语言网站。而 utf8mb4_bin 则适用于需要精确匹配二进制值的场景。
因此,在选择 utf8mb4_general_ci、utf8mb4_unicode_ci、utf8mb4_bin 时,需要根据具体的应用场景和需求来进行选择。
相关问题
utf8mb4_0900_ai_ci utf8mb4_general_ci
utf8mb4_0900_ai_ci 和 utf8mb4_general_ci 都是MySQL的排序字符集之一。
utf8mb4_0900_ai_ci 是在MySQL 8.0.0版本后引入的一种排序规则。它基于Unicode Collation Algorithm,支持对多种语言进行排序,并考虑了不同语言的特殊规则和排序顺序。
utf8mb4_general_ci 则是MySQL较早版本中使用的排序规则。它对字符进行简单的二进制比较,不考虑各种语言的排序规则和特殊情况。相比于utf8mb4_0900_ai_ci,utf8mb4_general_ci 能够提供更快的排序性能,但在某些特殊情况下可能会导致排序结果不符合用户的期望。
因此,如果你的数据库涉及到多种语言,并希望得到更准确的排序结果,推荐使用 utf8mb4_0900_ai_ci。如果你的数据库只涉及到简单的字符比较,并对排序性能有更高要求,可以选择 utf8mb4_general_ci。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [MySQL常用排序规则utf8mb4_general_ci、utf8mb4_unicode_ci、utf8mb4_bin、utf8mb4_0900_ai_ci和存储字符集...](https://blog.csdn.net/munangs/article/details/126617226)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
For key collation_server. Expected value utf8mb4_unicode_ci, found value utf8mb4_general_ci
这个错误提示表明在某个键的排序规则(collation)中,期望的值是utf8mb4_unicode_ci,但实际上找到的值是utf8mb4_general_ci。这可能是因为在修改MySQL配置文件时,没有正确地设置字符集和排序规则。可以尝试按照以下步骤解决这个问题:
1. 打开MySQL配置文件my.cnf或my.ini。
2. 确认在以下三个部分中都添加了如下内容:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=’SET NAMES utf8mb4’
3. 重启MySQL数据库。
4. 检查MySQL变量,确保字符集和排序规则已经正确设置:
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
如果还是出现错误,可以尝试使用ALTER DATABASE和ALTER TABLE命令修改数据库和表的字符集和排序规则,例如:
mysql> ALTER DATABASE voice_reports_test CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
mysql> ALTER TABLE ZSCC_WRK_BSE_CKLCC CONVERT to CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
阅读全文