MySQL 9.0 发行说明
MySQL 服务器具有服务器字符集和服务器排序规则。默认情况下,它们分别是 utf8mb4
和 utf8mb4_0900_ai_ci
,但可以在服务器启动时在命令行或选项文件中显式设置,并在运行时更改。
最初,服务器字符集和排序规则取决于启动 mysqld 时使用的选项。可以使用 --character-set-server
设置字符集。此外,还可以添加 --collation-server
设置排序规则。如果不指定字符集,则等同于 --character-set-server=utf8mb4
。如果只指定字符集(例如,utf8mb4
)而未指定排序规则,则等同于 --character-set-server=utf8mb4
--collation-server=utf8mb4_0900_ai_ci
,因为 utf8mb4_0900_ai_ci
是 utf8mb4
的默认排序规则。因此,以下三个命令具有相同的效果
mysqld
mysqld --character-set-server=utf8mb4
mysqld --character-set-server=utf8mb4 \
--collation-server=utf8mb4_0900_ai_ci
更改设置的一种方法是重新编译。要在从源代码构建时更改默认服务器字符集和排序规则,请使用 CMake 的 DEFAULT_CHARSET
和 DEFAULT_COLLATION
选项。例如
cmake . -DDEFAULT_CHARSET=latin1
或者
cmake . -DDEFAULT_CHARSET=latin1 \
-DDEFAULT_COLLATION=latin1_german1_ci
mysqld 和 CMake 都会验证字符集/排序规则组合是否有效。如果无效,则每个程序都会显示错误消息并终止。
如果在 CREATE DATABASE
语句中未指定数据库字符集和排序规则,则服务器字符集和排序规则将用作默认值。它们没有其他用途。
可以通过 character_set_server
和 collation_server
系统变量的值确定当前的服务器字符集和排序规则。这些变量可以在运行时更改。