collate utf8mb4_general_ci与 collate utf8mb4_bin;有什么区别,他们分别的含义是什么
时间: 2023-04-09 21:03:14 浏览: 62
Collate utf8mb4_general_ci 和 collate utf8mb4_bin 是 MySQL 数据库中的两种字符集排序规则。其中,utf8mb4_general_ci 是一种基于 Unicode 字符集的排序规则,它会将字符进行比较,并忽略大小写和重音符号。而 utf8mb4_bin 则是一种二进制排序规则,它会将字符按照二进制编码进行比较,不会忽略大小写和重音符号。
因此,当需要进行字符比较时,如果需要忽略大小写和重音符号,可以选择使用 utf8mb4_general_ci 排序规则;如果需要精确比较字符,可以选择使用 utf8mb4_bin 排序规则。
相关问题
COLLATE utf8mb4_bin
COLLATE utf8mb4_bin 是一种字符集排序规则,用于指定在比较和排序字符时使用的规则。utf8mb4_bin 表示使用 UTF-8 编码的 MySQL 字符集,以二进制方式进行比较和排序。
在 MySQL 中,COLLATE 子句可以与 ORDER BY、GROUP BY、DISTINCT 和 WHERE 等语句一起使用,以确定字符串的比较顺序。utf8mb4_bin 是一种区分大小写和基于字符编码的排序规则,它会直接按照二进制值进行比较,不考虑字符本身的语义或排序规则。
例如,使用 COLLATE utf8mb4_bin 进行排序时,"A" 和 "a" 是不同的字符,"A" 会被排序在 "a" 的前面。而在某些其他的排序规则中,它们可能被认为是相同的字符。
需要注意的是,utf8mb4_bin 是一种严格的二进制排序规则,不会考虑字符的语义或区域性排序规则。如果需要根据特定语言的排序规则进行排序,可以考虑使用其他适合的 COLLATE 规则,如 utf8mb4_unicode_ci(不区分大小写)或 utf8mb4_general_ci(区分大小写)等。
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;