collation_server
时间: 2023-12-30 17:02:43 浏览: 32
`collation_server` 是 MySQL 数据库中用于字符集排序(collation)的服务器。MySQL 中的字符集排序规则决定了如何比较和排序字符串。例如,在某些语言中,字母的顺序可能与英文不同,因此需要不同的排序规则。
`collation_server` 可以通过在 MySQL 配置文件中设置 `collation-server` 参数来指定。默认情况下,MySQL 使用 `latin1_swedish_ci`,这是一个适用于英语和西欧语言的排序规则。如果需要使用其他字符集排序规则,可以在创建表或列时指定该规则。
在 MySQL 中,collation_server 在查询时也可以被覆盖,可以使用 `COLLATE` 关键字来覆盖表或列的默认字符集排序规则。例如:
```
SELECT name FROM mytable ORDER BY name COLLATE utf8_general_ci;
```
这将使用 `utf8_general_ci` 排序规则对 `name` 列进行排序。
相关问题
mysql8 collation_database 与collation_server优先级
在 MySQL 8 中,`collation_database` 和 `collation_server` 都是用来设置字符集和排序规则的参数,但是它们的优先级是不同的。
`collation_server` 是设置 MySQL 服务器的默认字符集和排序规则的参数,它会影响到所有的数据库和表。如果没有在数据库或表中指定字符集和排序规则,那么就会使用 `collation_server` 的设置。
而 `collation_database` 则是设置当前数据库的字符集和排序规则的参数,它会覆盖 `collation_server` 的设置。如果在使用数据库时指定了不同的字符集和排序规则,那么就会使用 `collation_database` 的设置。
因此,`collation_database` 的优先级高于 `collation_server`。如果在数据库中指定了字符集和排序规则,那么就会使用数据库中的设置,而不是使用服务器的默认设置。如果没有在数据库中指定,那么就会使用服务器的默认设置。
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;