MySQL 5.5 へのアップグレード後、デフォルトの MySQL サーバー構成で発生した奇妙なバグに気付きました。これはデフォルトとして utf16 照合を使用します (少なくとも私にはそう思われます)。
奇妙な動作は次のとおりです。
次の 2 つのフィールドを持つテーブルを作成します。
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
誰でもこれを確認できますか?
my.cnf で強制的にデフォルトにすることができる UTF8 照合では発生しないようです。
[mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8