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