MySQL 8.3 Release Notes
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
一种更改设置的方法是重新编译。要在从源代码构建时更改默认服务器字符集和排序规则,请使用 DEFAULT_CHARSET
和 DEFAULT_COLLATION
选项 для CMake。例如:
cmake . -DDEFAULT_CHARSET=latin1
或:
cmake . -DDEFAULT_CHARSET=latin1 \
-DDEFAULT_COLLATION=latin1_german1_ci
both mysqld 和 CMake 都会验证字符集/排序规则组合是否有效。如果不是,每个程序都会显示错误消息并终止。
服务器字符集和排序规则用作默认值,如果数据库字符集和排序规则在 CREATE DATABASE
语句中没有指定。它们没有其他用途。
当前服务器字符集和排序规则可以从 character_set_server
和 collation_server
系统变量的值中确定。这些变量可以在运行时更改。