Documentation Home

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

MySQL 服务器有一个服务器字符集和一个服务器排序规则。默认情况下,它们是utf8mb4utf8mb4_0900_ai_ci,但它们可以在服务器启动时在命令行或选项文件中显式设置,并在运行时更改。

最初,服务器字符集和排序规则取决于您在启动mysqld时使用的选项。您可以使用 --character-set-server字符集。连同它,您可以添加 --collation-server排序规则。如果不指定字符集,则与 --character-set-server=utf8mb4. 如果您仅指定字符集(例如, utf8mb4)而不指定排序规则,则与说 因为是默认排序规则相同。因此,以下三个命令都具有相同的效果: --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_ai_ciutf8mb4_0900_ai_ciutf8mb4

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

更改设置的一种方法是重新编译。要在从源构建时更改默认服务器字符集和排序规则,请使用CMakeDEFAULT_CHARSET的 和DEFAULT_COLLATION选项 。例如:

cmake . -DDEFAULT_CHARSET=latin1

或者:

cmake . -DDEFAULT_CHARSET=latin1 \
  -DDEFAULT_COLLATION=latin1_german1_ci

mysqld和CMake都会 验证字符集/归类组合是否有效。否则,每个程序都会显示一条错误消息并终止。

CREATE DATABASE 如果语句 中没有指定数据库字符集和排序规则,则使用服务器字符集和排序规则作为默认值。他们没有其他目的。

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