升级到 MySQL 5.5 后,我们注意到默认 MySQL 服务器配置上发生的奇怪错误,它使用 utf16 排序规则作为默认值(至少在我看来)
奇怪的行为如下。
使用以下两个字段创建表
CREATE TABLE `aa` (
`a` ENUM('on','off') NOT NULL DEFAULT 'off',
`b` ENUM('on','off') NOT NULL DEFAULT 'off'
) CHARACTER SET 'utf16' COLLATE 'utf16_general_ci';
转储表,结构如下
CREATE TABLE `aa` (
`a` ENUM('o','o') NOT NULL DEFAULT 'o',
`b` ENUM('o','o') NOT NULL DEFAULT 'o'
)ENGINE=InnoDB
CHARACTER SET 'utf16' COLLATE 'utf16_general_ci';
系统配置
Ubuntu 12.04.1 LTS
Linux host 3.2.0-30-virtual #48-Ubuntu SMP Fri Aug 24 17:12:24 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
mysql-server-5.5 5.5.24-0ubuntu0.12.04.1 MySQL database server binaries and system database setup
任何人都可以证实这一点?
UTF8 排序规则似乎不会发生,这可以强制成为 my.cnf 中的默认值
[mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8