MySQL 服务器有一个服务器字符集和一个服务器排序规则。默认情况下,它们是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
更改设置的一种方法是重新编译。要在从源构建时更改默认服务器字符集和排序规则,请使用CMakeDEFAULT_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
系统变量的值中确定。这些变量可以在运行时更改。