Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


12.3.2 服务器字符集和排序规则

MySQL Server 有一个服务器字符集和服务器排序规则。默认情况下,这两个是 utf8mb4utf8mb4_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_ciutf8mb4 的默认排序规则。因此,以下三个命令都具有相同的效果:

mysqld
mysqld --character-set-server=utf8mb4
mysqld --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_0900_ai_ci

更改设置的一种方式是重新编译。使用CMake时,通过DEFAULT_CHARSETDEFAULT_COLLATION选项来更改默认服务器字符集和排序规则,例如:

cmake . -DDEFAULT_CHARSET=latin1

或者:

cmake . -DDEFAULT_CHARSET=latin1 \
  -DDEFAULT_COLLATION=latin1_german1_ci

mysqldCMake都验证字符集/排序规则组合是否有效。如果不是,各程序都会显示错误信息并终止。

服务器字符集和排序规则在没有在CREATE DATABASE语句中指定时,作为默认值。它们没有其他用途。

可以从character_set_servercollation_server系统变量中确定当前服务器字符集和排序规则。这些变量可以在运行时更改。